2013-02-19 5 views
18

Все решения, которые я смог найти, предлагают использовать метод .live(). Но на сегодняшний день он устарел.Как связать .hover() с динамически созданным элементом «li» elemtent?

.hover() отлично работает на элементах «li», которые не создаются динамически. Но как только я добавляю новый «li», .hover() не запускается вообще.

Кто-нибудь это понял?

ответ

34

Событие «зависание» устарело с делегированным обработкой событий, например .on() за .on() jQuery doc pages.

Вместо этого вам необходимо использовать делегированную обработку событий .on() с помощью мыши и мыши и обработчика событий для каждого.

Например:

$(document).on("mouseenter", "li", function() { 
    // hover starts code here 
}); 

$(document).on("mouseleave", "li", function() { 
    // hover ends code here 
}); 

В вашем реальном коде, вы должны выбрать статический родительский объект, который гораздо ближе к динамическим li тегов, чем document объекта для лучшей производительности.

+0

Итак, я думаю, это просто подтверждает то, что я подозревал :(Спасибо за ваш быстрый и прямой ответ. –

0

Использование JQuery On Попробуйте это:

$(document).on('hover', 'li', function() { 

}); 
+2

Это дает вам только одну функцию и устарело от jQuery 1.8. – jfriend00

0

Попробуйте

Edit: Sry пропустил Устаревшей событие

$(document).on("mouseenter", "li", function(){ 
     //Your code 
}); 

http://api.jquery.com/live/

fiddle

+0

Это дает вам только одну функцию и устарело от jQuery 1.8. – jfriend00

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