首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何禁用子元素触发的mouseout事件?

如何禁用子元素触发的mouseout事件?
EN

Stack Overflow用户
提问于 2008-12-08 19:48:12
回答 7查看 59.4K关注 0票数 109

让我详细描述一下这个问题:

当悬停在一个元素上时,我想显示一个绝对定位的div。对于jQuery来说,这非常简单,并且工作得很好。但是当鼠标移到其中一个子元素上时,它会触发包含div的mouseout事件。如何防止javascript在悬停子元素时触发包含元素的mouseout事件。

用jQuery做到这一点的最好和最快捷的方法是什么?

这里有一个简单的例子来说明我的意思:

Html:

代码语言:javascript
复制
<a>Hover Me</a>
<div>
  <input>Test</input>
  <select>
    <option>Option 1</option>
    <option>Option 2</option>
  </select>
</div>

Javascript/jQuery:

代码语言:javascript
复制
$('a').hover( function() { $(this).next().show() }
              function() { $(this).next().hide() } );
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-07-24 17:04:30

这个问题有点老了,但前几天我遇到了这个问题。

使用最新版本的jQuery执行此操作的最简单方法是使用mouseentermouseleave事件,而不是mouseovermouseout

您可以使用以下命令快速测试行为:

代码语言:javascript
复制
$(".myClass").on( {
   'mouseenter':function() { console.log("enter"); },
   'mouseleave':function() { console.log("leave"); }
});
票数 217
EN

Stack Overflow用户

发布于 2015-09-18 18:21:59

是的,伙计们,用.mouseleave代替.mouseout

代码语言:javascript
复制
$('div.sort-selector').mouseleave(function() {
    $(this).hide();
});

或者甚至与live结合使用

代码语言:javascript
复制
$('div.sort-selector').live('mouseleave', function() {
    $(this).hide();
});
票数 11
EN

Stack Overflow用户

发布于 2008-12-08 20:30:03

您正在寻找与javascript的防止事件冒泡等效的jQuery。

看看这个:

http://docs.jquery.com/Events/jQuery.Event#event.stopPropagation.28.29

基本上,您需要在子DOM节点中捕获事件,并在那里停止它们在DOM树上的传播。另一种方法是将事件捕获设置为页面上的特定元素,它将接收所有事件,尽管实际上不建议这样做(因为它会严重干扰页面上的现有事件)。这对DnD行为之类的很有用,但对你的情况绝对不是。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/350639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档