игнорировать событие Mouseout из дочернего элемента элемента Mouseover


Мне нужно отобразить подсказку для изображения при наведении курсора мыши. Для этого я написал следующий код. Моя текущая проблема заключается в том, что когда я помещаю изображение во всплывающую подсказку div, событие происходит только для элемента image. Как я могу игнорировать событие mouseover и mouseout из дочернего элемента моей родительской подсказки div?

$("document").ready(function() {
        $('.tooltip').mouseover(function(e){
            var id = $(this).siblings('.tooltip-c').attr('id');
            $('.tp'+id).fadeIn(500);
            $('.tp'+id ).mouseout(function(event){
                $('.tp'+id).fadeOut(300);
            });
        });
    });

Пожалуйста, помогите мне, ребята. Я беспомощен.

2 2

2 ответа:

Можно использовать метод event .stopPropagation() в функции обработчика событий.

$("document").ready(function() {
    $('.tooltip').mouseenter(function(event){
        var id = $(this).siblings('.tooltip-c').attr('id');
        $('.tp'+id).fadeIn(500);
        event.stopPropagation(); 
     });
});

Попробуйте использовать .mouseenter () и .вместо этого mouseleave () . Они обрабатывают бурление событий иначе, чем .mouseover() и .mouseout(). Я думаю, что это должно решить вашу проблему:

$("document").ready(function() {
  $('.tooltip').mouseenter(function(e){
    var id = $(this).siblings('.tooltip-c').attr('id');
    $('.tp'+id).fadeIn(500);
    $('.tp'+id ).mouseleave(function(event){
      $('.tp'+id).fadeOut(300);
    });
  });
});