在IE中悬停行为怪异

时间:2010-11-11 11:07:13

标签: javascript jquery

看看这个HTML代码:

<div class="overlay">
    <a href="#">1</a>
    <a href="#">1</a>
    <a href="#">1</a>
    <a href="#">1</a>
    <a href="#">1</a>
</div>

和这个jQuery代码:

$('div.overlay').mouseenter(function() { clearTimeout(thumbsAway); });
$('div.overlay').mouseleave(function() { clearTimeout(thumbsAway); $('ul.thumbs').animate({top: '520px'}, 750); });

问题是在IE中,悬停在任何子元素上也会触发mouseenter / mouseleave。我该如何防止这种情况?

2 个答案:

答案 0 :(得分:1)

您可以使用event.stopPropagation()

$('div.overlay').hover(function(event){
    event.stopPropagation();
    clearTimeout(thumbsAway);
  },
  function(event){
    event.stopPropagation();
    clearTimeout(thumbsAway);
  }
);

或检查事件的目标。

$('div.overlay').hover(function(event){
    if (this == event.target){clearTimeout(thumbsAway);}
  },
  function(event){
    if (this == event.target){clearTimeout(thumbsAway);}
  }
);

答案 1 :(得分:0)

尝试使用stopPropogation()停止事件传播:

$('div.overlay').mouseenter(function(e) {
  e.stopPropogation();
  clearTimeout(thumbsAway);
});

  

描述:阻止事件发生   冒泡DOM树,防止   任何父母的处理者   通知了这一事件。