当mouseenter在子元素上时,如何不在父项上触发mouseleave?

时间:2013-03-01 06:46:31

标签: javascript javascript-events mouseevent jquery

无法完成这项工作。没有我的确切情况以及为什么我要做我正在做的事情,一个基本的摘要是:

我在父级中有4个元素子元素。我目前正在为孩子们附上一个mouseenter

$('.parent').on('mouseenter', '.child', function() {
    showSomething();
});

然后我想说

$('.parent').on('mouseleave', function() {
    hideSameSomething();
});

但是当孩子的mouseenter在父母身上发起mouseleave并产生令人讨厌的闪烁时。我在子处理程序上尝试了e.stopPropagation()但没有运气。任何想法,当我进入子元素时,以及只有当我真正离开父母时,如何不触发父mouseleave事件?感谢。

2 个答案:

答案 0 :(得分:2)

尝试将两者合二为一。

正式文件http://api.jquery.com/on/#on-events-selector-data

$(".parent, .child").on({
    mouseenter: function() {
        // Handle mouseenter...
    },
    mouseleave: function() {
        // Handle mouseleave...
    }
});

答案 1 :(得分:1)

尝试:

$('.parent .child').on("mouseenter", function() {

    showSomething();

    $(this).closest('.parent').on("mouseleave", function() {
        hideSameSomething();
    });

});