Раздел вопрос-ответ Не работает jquery hover delegate

Не работает jquery hover + delegate.

Событие hover без delegate (on) работает:

$('body .b-list__item').hover(
	function() {
		$(this).find('.item-icon').show();
	},
	function() {
		$(this).find('.item-icon').hide();
	}
);

А с делегированием события hover через  jQuery.delegate() не работает ни разу:

$('body').delegate(".b-list__item", "hover", function( event ) {
	console.log('hover ?!');
	if ( event.type === 'mouseenter' ) {
		$(this).find('.item-icon').show();
		alert('show');
	}
	else {
		$(this).find('.item-icon').hide();
		alert('hide');
	}
});

 

share

1 ответ

>Не работает jquery hover + delegate.

Объяснение:

Начиная с jquery 1.4.3 вместо hover можно использовать 2 события: 

  • mouseover - событие вызывается при наведение указателя на элемент;
  • mouseout - событие вызывается, когда указатель покидает элемент.

В новых версиях jquery Hover не работает вместе с delegate, вместо этого нужно повесить два раздельных обработчика:

$('body').on({
	mouseover:function(){
		$(this).find('.item-icon').show();
	},
	mouseout:function(){
		$(this).find('.item-icon').hide();
	}
}, '.b-list__item');

 

Добавить комментарий
    как минимум 5 символов

    icon Вход в систему

    зарегистрироваться
    НОВЫЕ ПОЛЬЗОВАТЕЛИ