JavaScript / JQuery事件处理程序问题

时间:2010-07-28 23:19:36

标签: javascript jquery

使用JavaScript / JQuery玩了一下,并制作了一个“害羞”的按钮,而不只是一个带有单词的p-tag。它工作正常,除了bool goDown似乎没有改变,所以它总是下降。我的代码出了什么问题?

VS2010中的JavaScript调试似乎也不是很好,这是一个已知的问题吗?

提前致谢!

if (typeof naarBeneden == 'undefined') {
    var goDown = new Boolean(true);
}

$(document).ready(function () {

    $(".moveme").animate({ "left": "+=500px"
    }, 2000);
    $(".moveme").hover(move());
});


function move() {
    if (goDown) {
        $(".moveme").hover(function () {
            $(this).animate({ "top": "+=50px" }, 0)
        });
        goDown = false;
    }
    else {
        $(".moveme").hover(function () {
            $(this).animate({ "top": "-=50px" }, 0)
        });
        goDown = true;
    }
}

1 个答案:

答案 0 :(得分:1)

主要问题在于:

$(".moveme").hover(move());

您正在调用move()而不是使用move作为处理程序,您需要它而不使用括号,如下所示:

$(".moveme").hover(move);

即使这样做,你也会在每个hover事件上分配一个新的.hover()处理程序,我怀疑这是你真正想要的。很难确切地说出你追求的是什么,但我认为就是这样:

$(function () {
  var goDown = typeof naarBeneden != 'undefined';
  $(".moveme").animate({ "left": "+=500px" }, 2000);
              .hover(function () {
                $(this).animate({ "top": goDown ? "+=50px" : "-=50px" }, 0);
              }, function() {
                $(this).animate({ "top": !goDown ? "+=50px" : "-=50px" }, 0);
              });
});

当您悬停/离开元素时,如果goDowntrue,则会分配一个向上向下的动画,如果goDownfalse,则会反过来。