除非光标重新进入元素,否则不会检测到带有live()的JQuery鼠标悬停

时间:2011-01-02 08:11:04

标签: jquery

我有一个对象,onclick接收一个活动的类,它的位置是动画的。如果您将“.active”悬停在对象上,则应显示另一个元素(不是子元素)。

我的问题是,如果光标没有离开并重新输入元素,则不会触发mouseover事件。你可以在这里看到一个演示:

http://jsfiddle.net/KqMQJ/

如果您将光标置于“hello”之上,您将看到问题所在。 注意:我的实际约束使我无法“查看”子元素。

3 个答案:

答案 0 :(得分:1)

添加完课程后立即调用鼠标悬停处理程序:

$("#whatever").click(function(e) {
    $(this).animate({marginLeft: "50px"}, function() {
        var $this = $(this);

        $this.addClass("active");

        if ($this.offset().left <= e.pageX) {
            $this.mouseover();
        }
    });
});

请参阅fiddle

答案 1 :(得分:1)

我建议您添加之前的类动画。我认为这更好,因为它可以在动画时显示。这需要同时移动两个元素。

Source code on Fiddle

$("#whatever").click(function() {
    $(this).addClass("active").mouseover();
    $(this).animate({marginLeft: "50px"});
    $('#view').animate({marginLeft: "50px"});
});

答案 2 :(得分:0)

对于我的特殊情况,这有效:

$("#whatever.active").live('mouseover mouseout mousemove',function(event){
    if (event.type=="mouseover")
        $("#view").css("opacity", "1");
    else
        $("#view").css("opacity", "0");
    }
);

然而,我接受凯尔的回答,因为它适用于大多数情况。