忽略Mouseover元素的子元素中的Mouseout事件

时间:2012-04-22 09:14:44

标签: jquery mouseevent mouseover event-bubbling dom-events

我需要在鼠标悬停时显示图像的工具提示。我为此编写了以下代码。我当前的问题是,当我将图像放入工具提示div时,事件仅发生在图像元素上。如何从父工具提示div的子元素中忽略mouseover和mouseout事件?

$("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 个答案:

答案 0 :(得分:17)

请尝试使用.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);
    });
  });
});

答案 1 :(得分:2)

您可以在事件处理函数中使用事件.stopPropagation()方法。

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