У меня есть общий вопрос об определении клиентских событий и триггера:
jQuery(document).on('btn.hover', function () {
jQuery('.orange_bubble').hover(function () {
jQuery(this).addClass('hover');
}, function () {
jQuery(this).removeClass('hover');
});
});
Теперь я могу вызвать событие триггера, чтобы запустить это событие один раз.
jQuery(document).trigger('btn.hover');
Если я создаю контент поверх ajax или через js, мне нужно переподчинить событие на новые элементы:
поэтому я запускаю его снова:
$.ajax{
bla
success: {
jQuery(document).trigger('btn.hover');
}
}
Как я могу сделать это без укладки событий. У меня есть эта проблема прямо сейчас. Я использую некоторые клиентские события, и иногда им приходится переучивать все элементы, но просто одно время и не складывать.
Какая самая лучшая практика для того, чтобы уволить события однажды? Если они установлены на некоторые элементы в dom?
спасибо для справки
.hover() - это ярлык для использования событий mouseenter и mouseleave, но один из недостатков заключается в том, что он не может использоваться для регистрации делегированных обработчиков, поэтому вместо использования .hover() используйте события напрямую.
Поэтому постарайтесь
jQuery(document).on({
mouseenter: function () {
jQuery(this).addClass('hover');
},
mouseleave: function () {
jQuery(this).removeClass('hover');
}
}, '.orange_bubble')
Прежде всего вам не нужно переписывать событие на вновь добавленные элементы, если вы используете делегирование событий. На странице JQuery
Преимуществом делегированных событий является то, что они могут обрабатывать события из элементов-потомков, которые будут добавлены в документ позже. Выбрав элемент, который, как гарантируется, будет присутствовать во время присоединения делегированного обработчика событий, вы можете использовать делегированные события, чтобы избежать необходимости часто присоединять и удалять обработчики событий
вы можете использовать что-то вроде:
$( "//container of .orange_bubble elements" ).on( "hover", ".orange_bubble", function() {
//your content
});
Это также предотвратит "укладку" событий