4

首先,我确实意识到有很多类似的问题,但我就是无法理解答案或 jsfiddle 答案不起作用!

我的问题既快速又简单,我有一个 div,点击它会将第二个 div 向右移动。但我希望 div 在执行动画时不可点击。这是我的代码:

$("#go").click(function() {
    $("#go").off()
   functionlist["flip"]()
    $("#go").on()
})​

但是 div 永远不会变成可点击的。我真的误解了语言吗?非常感谢!

http://jsfiddle.net/g5mJd/12/

编辑:我想避免在动画时使元素不可点击,因为我想在点击时执行其他功能并且run在此过程中仍然禁用它。我只以动画为例。

4

3 回答 3

2

我认为你有点误解了什么on()off()正在做什么。 on()不会恢复off()删除的点击处理程序,它会附加一个新的。您必须为其提供一个处理程序来附加。

而不是使用on()and off(),而是使用这个问题的解决方案:Make an element unclickable while animated

于 2012-12-01T05:29:34.367 回答
2

这是一个有趣的。让我失望的是您无法评估 :animated 因为您正在使用方法转换。我已将以下内容添加到您的点击处理程序中,并在此处提供了一个分叉:

var functionlist = {
    flip: function() {
        $("#block").transition({
            x: '+=100'
        }, 500, function(){$("#block").attr('data-animating', "false");});
    },
    flop: function() {
        $("#block").transition({
            rotateY: '0deg'
        }, 500)

    }
};


$("#go").click(function() {
    if ($("#block").attr('data-animating') !== "true") {
        console.log($("#block").attr('data-animating'));
        $("#block").attr('data-animating', "true");
        functionlist["flip"]();
    }
});​
于 2012-12-01T05:40:13.263 回答
0

这不是 JQuery 开/关方法的正确用法。请再次浏览文档。

您应该将事件名称和处理函数传递给 on 方法。

$("#id").on("click", function() {});

$("#id").off("点击");

于 2012-12-01T05:34:07.647 回答