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...);
Тело может ссылаться на любой контекст или контейнер, для которого вам нужно наблюдать за событиями.