jquery: связывание события hover с загруженным содержимым ajax - PullRequest
9 голосов
/ 25 июня 2009

Я использую jQuery, чтобы попытаться связать некоторые недавно загруженные <li> элементы с .hover(), и я застрял. В данный момент я перезагружаю содержимое в <ul> с помощью ajax, и есть событие hover с .hover(); на <li>. Конечно, событие hover отлично работает с содержимым, не загруженным ajax.

Я знаю, что могу использовать mouseover / mouseout, чтобы связать событие с .live();, что является хорошим решением, если бы не было mouseover / mouseout плохой привычкой прерывать событие, если вы наводите дочерний элемент текущего элемента, к которому привязан курсор мыши. Поэтому я использую .hover();, потому что я могу свободно перемещать дочерние элементы моего элемента, связанного с наведением, без отмены события.

bind();, похоже, тоже не работает, поэтому мой вопрос: есть ли смысл пытаться привязать события ajax к <li> событиям и сохранять эффект наведения как hover();, или должен Я просто переворачиваюсь и использую mouseover / mouseout с live(); и пытаюсь решить проблему детей при наведении мыши каким-нибудь другим способом?

Сообщение об успехе:

success: function(data){ 
           $('ul#list').bind().append("<li>test test</li>");
         }

1 Ответ

8 голосов
/ 25 июня 2009

bind работает как this . * например 1003 *

$('#list').bind('mouseover', function(){})

Однако я думаю, что вам нужно просто вызвать ту же функцию, которую вы используете для привязки события при первой загрузке документа. Если он находится внутри блока готовности документа, извлеките его в функцию и просто вызовите ту же функцию в doc ready и в событии ajax success.

1008 * например *

$(document).ready( function(){

   bindHover( $('#list>li') )

   $.ajax({ success: function(data){
                         bindHover( data.find('li') );
                     },
            url: bla
   });

})

function bindHover($liList){
  $liList.hover( fn, fn )
}
...