Отличный ответ User113716 больше не будет работать в jQuery 1.9 + , поскольку псевдо-событие hover
больше не поддерживается ( руководство по обновлению ).
Также, поскольку jQuery 3.0 delegate()
для событий привязки официально устарел, поэтому, пожалуйста, используйте new on()
(документы) для всех целей привязки событий.
Вы можете легко перенести решение user113716 , заменив hover
на mouseenter mouseleave
и переключившись наon()
синтаксис:
$('mydiv').on('mouseenter mouseleave', 'seconddiv', function(event) {
$(this).toggle( event.type === 'mouseenter' );
});
Если ваша проблема сложнее простой toggle
, я предлагаю связать два отдельных события:
$('mydiv').on('mouseenter', 'seconddiv', function( event ) {
// do something
}).on('mouseleave', 'seconddiv', function( event ) {
// do something different
});
NB: Так как hover
был удален в v1.9 и on()
был введен в v1.7, нет реальной необходимости в решении, использующем delegate()
- но если вам это нравится по какой-то причине;это все еще там (пока) и делает работу:
$('mydiv').delegate('seconddiv','mouseenter mouseleave', function(event) {
$(this).toggle( event.type === 'mouseenter' );
});