JQuery наведите курсор на не работает живые работы

У меня были проблемы с

$('.myElement').on('hover',function({...});

После попытки .on('hover', .hover(), который оба не работали, я пытался .live('hover',),.live('hover',) сработало.. однако я использую jQuery 1.8.3 так с чего это? Вот код, с которым я работал:

JQuery

$('.myElement > a').live('hover',function(event) {
    //do stuff
}

HTML

<div class="myElement">
    <a href="#" />
</div>

Иногда я задаюсь вопросом, просто делаю ли я глупые ошибки, или яростные выражения просто сумасшедшие...

4 ответа

Решение

on() работает только как live() когда вы передаете ему делегированный селектор во втором параметре. В вашем случае основным селектором будет элемент контейнера, который ваш .myElement элементы добавляются, и делегат будет .myElement, как это:

$('.parentOfMyElement').on('hover', '.myElement', function() {
    // do stuff...
});

Попробуй это

$('.myElement > a').hover(function(event) {
//do stuff
  alert('hover');
});

Посмотрите этот пример

Привет.

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

Например, ".myElement" является вложенным элементом ".myContainer", тогда вы можете сделать

$('.myContainer').on('hover', '.myElement', function(e) {
    ...
});

Попробуй это.

$('body').on('hover', '.myElement', function...);

Тело может ссылаться на любой контекст или контейнер, для которого вам нужно наблюдать за событиями.

Другие вопросы по тегам