当进入另一个特定元素时停止jQuery Mouseleave事件

5

我需要知道如何在将鼠标滑动到不同元素(链接)时停止触发我的mouseleave事件。 我该如何设置一个条件,只有在未进入特定元素的情况下才执行mouseleave动画?

$(activity_link).mouseenter(function() {
    $(this).siblings(".delete_place").animate({ 
                                               "left" : "-28px"
                                              }, 300);     
}).mouseleave(function() {
     $(this).siblings(".delete_place").animate({
                                                "left" : 0
                                               }, 300);
});

2
包含您的HTML和此元素的具体信息会很有帮助。通常的方法是将此元素作为主要元素的子元素并绝对定位。但这非常依赖于具体情况。 - James Montagne
你可能应该在问题中添加更多信息,因为解决整体问题可能有比使用 .mouseenter.mouseleave 更好的方法。 - CaptainBli
2个回答

4

关于事件的 relatedTarget 属性的使用:

$(activity_link).mouseenter(function () {
    $(this).siblings(".delete_place").animate({
        "left": "-28px"
    }, 300);
}).mouseleave(function (e) {
    if (e.relatedTarget != myElem) { //where myElem is a HTML element
        $(this).siblings(".delete_place").animate({
            "left": 0
        }, 300);
    }
});

relatedTarget 真的很棒!谢谢 :) - ravbetsky
在这种情况下,当你离开 myElem 时, mouseleave 事件将不会再次执行。我认为它应该在鼠标离开 activity_linkmyElem 时执行。你有什么解决办法吗?因为我也有同样的问题。链接 - stack

-1

你可以停止事件并防止它冒泡或触发:

...
}).mouseleave(function(event) {
    if(mycondition) {
        $(this).siblings(".delete_place").animate({"left" : 0}, 300);
    } else {
        event.preventDefault();
    }
    ...

5
我认为问题是该如何将“mycondition”翻译成中文。 - A. Wolff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接