Jquery Невозможно навести курсор добавить HTML - PullRequest
0 голосов
/ 13 января 2010

Я добавляю HTML в DOM через jquery.append - мой скрипт выглядит следующим образом (прошу прощения за дерьмовый код)

myDiv = $("<div class='bottomright' title="+msgID+">"+msgTitle+msgContent+
"</div>").appendTo(document.body).fadeOut(0).slideDown('fast');
shown.push(msgID);

есть ли другой способ обратиться либо к наведению курсора, либо к добавлению (потому что, глядя на firebug, кажется, что div'ы туда попали, и они отображаются идеально), чтобы я мог использовать функцию наведения?

Когда я говорю, что не могу его использовать, я имею в виду, что он на самом деле ничего не делает, я написал следующее и ничего не происходит:

$(".bottomright").hover(function(){
    alert("text")
})

Ответы [ 4 ]

6 голосов
/ 13 января 2010

hover принимает две функции в качестве аргументов:

первый аргумент - это функция, которая должна выполняться, когда элемент получает фокус от мыши. вторая срабатывает, когда элемент теряет фокус от мыши.

-BUT- поскольку вы динамически генерируете эти элементы, вам нужно использовать live:

live не работает с hover, поэтому вы вынуждены сделать это:

$( '.bottomright' ).live( 'mouseover',  function() { alert( "in" ); } )
                   .live( 'mouseout', function() { alert( "out" ); } );
0 голосов
/ 13 января 2010

Я думаю, что нашел ответ - все, что я сделал, это переместил вызов hover туда, где генерировался div, который был в цикле for. Я прочитал немного дальше, и причина, по которой он не работал, заключается в том, что он активировал hover при загрузке DOM, но не было div, к которому можно было бы привязать его - при запуске его каждый раз, когда делался div, кажется, он работает просто отлично , Может быть, есть лучший способ сделать это ?? Однако, спасибо! Я попробую .live ()

0 голосов
/ 13 января 2010

добро пожаловать в переполнение стека!

Просто подсказка - это действительно помогает отформатировать код с помощью кнопки 10101 вверху. Например:

myDiv = $(""+msgTitle+msgContent+"").appendTo(document.body).fadeOut(0).slideDown('fast'); 
shown.push(msgID);

Что касается вашего вопроса, я предполагаю, что ваш объект класса "bottomright" может не занимать места. Я заметил ваши fadeOut и slideDown, может, есть что-то еще, что заставляет div не занимать места? (Проверьте на вкладке макета Firebug).

Кроме того, вы связываете событие hover после создания div? Если это раньше, это может не сработать. В jQuery 1.3 они добавили live (type, fn) , чтобы также связать все будущие объекты.

0 голосов
/ 13 января 2010

Вам нужно использовать функцию live(), так как кажется, что ваш div генерируется динамически:

$('.bottomright').live('hover', function() { alert( "text" ); }, function() {} );
...