问题是关于被触发两次的事件 mouseenter。
代码在这里: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'));
    });
})

我理解问题是事件与类属性相关联,因此每个类都会触发它,但我需要找到一种方法来考虑只为 child 触发的事件。

在示例中,当鼠标悬停在 text2 上时,它显示在控制台“text2 text1”中,但我想找到一种仅显示“text2”的方法(保持相同的 HTML 代码)

最佳答案

使用 stopPropagation() ;防止事件冒泡 DOM 树,

$(document).ready(function() {
    $(".elt").mouseenter(function(e) {
       e.stopPropagation();
        console.log($(this).attr('val'));
    });
})

Updated demo

关于javascript - JS mouseenter 触发两次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26179191/

10-09 14:54