jQuery事件只绑定一次

时间:2014-06-06 21:28:13

标签: jquery events mouseover mouseout

我有鼠标悬停和mouseout事件,我想要一直绑定。即如果我鼠标悬停一个元素,然后鼠标悬停,然后鼠标悬停,依此类推,这些事件处理程序仍应触发。我该怎么解决这个问题?现在他们只绑定一次......

    $welcome = $("#welcome");
    $welcomeClone = $("#welcome").clone();

    $welcome.mouseover(function() {
        $welcome.css("height","400px");
    });

    $welcome.mouseout(function() {
        $welcome.hide();
        $("#vertical-center").append($welcomeClone)
    });

1 个答案:

答案 0 :(得分:1)

原因是因为每个mouseout隐藏了$welcome元素 - 然后将其复制到#vertical-center - 克隆元素没有相同的事件处理程序。您应该使用事件委派:

$welcome = $("#welcome");
$welcomeClone = $("#welcome").clone();

$("#vertical-center").on("mouseover", "#welcome", function() {
    $(this).css("height", "400px");
}).on("mouseout", function() {
    $(this).hide();
    $("#vertical-center").append($welcomeClone)
});