2

我如何触发 jQuery 的

mouseleave

鼠标不在 elementA 和 elementB 上时的事件?

为了更好地理解,请参见此处的示例。

将两个元素都包装在 containerC 中并从中触发事件不是一种选择,因为我在两个不同的表格单元格中有 elementA 和 elementB 。

我不是要进行多元素选择(,)。我正在尝试模拟逻辑 AND (&&)。如上所述,当鼠标既不在 elementA 也不在 elementB 上时,必须触发该事件......

我希望你能理解我的问题...

4

3 回答 3

3

mouse_over当鼠标进入任一元素时,这将添加一个类。然后它会在检测到 a 时检查是否没有mouse_over元素mouseleave。需要 setTimeout 以允许 mouseenter 在 mouseleave 之前触发,并且可能需要额外调整以消除竞争条件

工作小提琴

$('.myDiv, .myDiv1').mouseenter(function () {
    $(this).addClass('mouse_over')
})
$('.myDiv, .myDiv1').mouseleave(function () {
    $this = $(this)
    timeoutId = setTimeout(function () {
        $this.removeClass('mouse_over')
        if ($('.mouse_over').length == 0) {
            console.log('not_in_either');
        }
    }, 1);
});
于 2013-09-03T08:15:14.817 回答
0

作为变体 - 设置类,例如当鼠标悬停时将“悬停”到 div,并在鼠标离开时将其删除。

然后创建函数,检查 elementA 和 elementB 没有“悬停”类,如果两者都为真 - 做任何事情。将此函数绑定到 elementA 和 elementB mouseleave 事件。

于 2013-09-03T08:17:53.160 回答
0

好吧,我已经更新了您的演示,它应该可以在按钮单击上运行,您可以根据您的要求进行更改。

是演示

$('.myDiv').mouseleave(function(){ console.log('out'); });
         $('input').click(function(){
              alert('a');
              $('.myDiv').trigger('mouseleave');
         });
于 2013-09-03T08:18:19.303 回答