问题是关于事件 mouseenter 被触发两次。
代码在这里:http://jsfiddle.net/xyrhacom/ http://jsfiddle.net/xyrhacom/
HTML :
<div id="elt1" class="elt" val="text1">
text1
<div id="elt2" class="elt" val="text2">
text2
<div>
</div>
JS :
$(document).ready(function() {
$(".elt").mouseenter(function() {
console.log($(this).attr('val'));
});
})
我知道问题是事件链接到类属性,因此每个类都会触发该事件,但我需要找到一种方法来仅考虑为子级触发的事件。
在示例中,当鼠标悬停在 text2 上时,它会在控制台中显示“text2 text1”,但我想找到一种仅显示“text2”的方法(保持相同的 HTML 代码)
use 停止传播() http://api.jquery.com/event.stoppropagation/;防止事件在 DOM 树中冒泡,
$(document).ready(function() {
$(".elt").mouseenter(function(e) {
e.stopPropagation();
console.log($(this).attr('val'));
});
})
更新了演示 http://jsfiddle.net/xyrhacom/1/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)