2014-01-17 3 views
1

Я пытаюсь правильно позиционировать динамически сгенерированный абзац. Проблема заключается в том, что $ (this) .outerWidth относится к span.simpleTooltip, а не к самому абзацу.Как получить внешнюю ширину созданного абзаца

$(document).on('mouseenter', "span.simpleTooltip", function(event) { 

$('<p></p>') 
    .addClass("tooltip") 
    .text("foo bar bla") 
    .offset({left: $(this).outerWidth()}) 
    .appendTo('body')     
    .fadeIn('slow');   
}) 
+5

Существует не ширина до тех пор, пока вы приложили его к элементу. В конце концов, ширина будет определяться шириной нового родительского элемента, которая может быть очень большой или очень малой. – Sampson

+1

, потому что 'this' относится к элементу, который вызвал действие – Andy

+0

попробуйте что-то вроде этого' $ this = $ ('

'); 'и затем используйте' $ this' вместо '$ (this)' – dreamweiver

ответ

1

Попробуйте это:

var $paragraph = $('<p>').hide().appendTo('body)'; 
    $paragraph.addClass("tooltip").text("foo bar bla"); 
    $paragraph.offset({left: $paragraph.outerWidth()}); 
    $paragraph.fadeIn('slow');   
+0

Это трюк, thx Ruben! – nevrx

0

Попробуйте это:

$('span.simpleTooltip').on('mouseenter', 'document', function(event) { 
... 
}); 
+0

Я пробовал это , но мышь не срабатывала вообще. В любом случае спасибо. – nevrx

Смежные вопросы