Jquery.Hover не работает для динамического элемента - PullRequest
4 голосов
/ 02 ноября 2011

Вот мой код

$(".inboxfeedlist li").hover(function(e){alert('');}

Это не работает для динамически создаваемых элементов, даже если я использую

$(".inboxfeedlist li").bind('hover',function(){})

тоже не работает, в чем проблема с кодом.

Ответы [ 8 ]

32 голосов
/ 13 марта 2013

live устарели на jQuery 1.9.Вместо этого мы можем использовать on с mouseenter и mouseleave событиями:

$(document).on("mouseenter", ".save-btn", function(e) {
    $(this).css("background-image","url('ie/imgs/btn/hover-btn.png')");
    $(this).find("a").css("background-image","url('ie/imgs/btn/hover-btn-left.png')");
});

$(document).on("mouseleave", ".save-btn", function(e) {
    $(this).css("background-image","url('ie/imgs/btn/btn.png')");
    $(this).find("a").css("background-image","url('ie/imgs/btn/btn-left.png')");
});

По какой-то причине я не могу использовать hover с on.Это просто не работает.Но из того, что я прочитал, hover - это всего лишь адаптация от mouseenter и mouseleave, так что все хорошо.(https://stackoverflow.com/a/4463384/1031340)

Если вам не нужна поддержка IE6, я рекомендую использовать :hover в вашем CSS (если это изменение только в CSS, как в примере выше).

3 голосов
/ 02 ноября 2011

Используйте живой метод:

$(".inboxfeedlist li").live('hover', function(e){alert('');});

Примечание: hover принимает две функции обратного вызова, вы имели в виду mouseover

3 голосов
/ 02 ноября 2011

попробуй живи

$(".inboxfeedlist li").live('hover',function(){});
1 голос
/ 02 ноября 2011

Звучит так, как вам нужно вживую или делегат . Делегат предпочтительнее

$(document.body).delegate(".inboxfeedlist li", "hover", function(){
        alert('');
});
1 голос
/ 02 ноября 2011

Используйте delegate или live, чтобы связать события.Это гарантирует, что все добавленное динамически будет связано с обработчиком событий.

0 голосов
/ 29 января 2019

Вот использование и детали этих функций

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

$ (селектор) .live (события, данные, обработчик); // jQuery 1.3 +

$ (документ) .delegate (селектор, события, данные, обработчик); // jQuery 1.4.3 +

$ (документ) .on (события, селектор, данные, обработчик); // jQuery 1.7 +

0 голосов
/ 23 мая 2013

Вы можете использовать что-то вроде этого:

$(document).on('mouseover','div.cover-wrapper',function(){
    $(this).css({'border':'1px solid #000'});
});


$(document).on('mouseout','div.cover-wrapper',function(){
    $(this).css({'border':'none'});
});
0 голосов
/ 02 ноября 2011
$('.inboxfeedlist li').live('hover', function(e) { alert(''); });

jQuery live

jQuery делегат

...