JQuery - 重置count时再次绑定()

时间:2012-11-28 11:29:27

标签: javascript jquery

在我的游戏中,我想确保每次出现按钮时只点击一次,以阻止它多次加载该功能。

如果计数大于零,我编写了一些计算点击次数和解除绑定的代码。

var oneClick = 0;
$(".start-btn-wrapper").bind("click", function () {
    oneClick++;
        if (oneClick > 0) {
        $(this).unbind("click");
    }
        newGame();
});

这样可以正常工作,但是我需要一种方法再次绑定它,以备下次出现时(单击restart-btn时),所以我写了这个来重置计数。

$(".restart-btn").click(function () {
    resetGame();
    oneClick = 0;

});

出于某种原因,这不能胜任这项工作,而我正在寻求解决方案

4 个答案:

答案 0 :(得分:2)

你没有再次绑定,只是改变了oneClick,它甚至没有作为$(".start-btn-wrapper")的事件处理程序进行测试,不再绑定。

但是,为什么不只是测试oneClick,而不是解除绑定/重新绑定,这是代价$(".start-btn-wrapper").bind("click", function () { if (oneClick++ > 0) return; newGame(); }

var clickable = true;
$(".start-btn-wrapper").bind("click", function () {
    if (!clickable) return;
    newGame();
    clickable = false;
}
$(".restart-btn").click(function () {
    resetGame();
    clickable = true;
});

请注意,如果您只需要两个状态,布尔值会更清晰:

{{1}}

答案 1 :(得分:1)

jQuery有一个内置的方法,正是这种用法。它是.one()

所以你要做的就是

$(".start-btn-wrapper").one('click',newGame);

并重启

$(".restart-btn").click(function () {
    resetGame();
    $(".start-btn-wrapper").one('click',newGame);
});

答案 2 :(得分:0)

简单

var oneClick = 0;
$(".start-btn-wrapper").bind("click", function () {

        if (oneClick > 0) {
        return false;
    }
        oneClick++;
        newGame();
});

$(".restart-btn").click(function () {
    resetGame();
    oneClick = 0;

});

答案 3 :(得分:0)

var oneClick = 0;

function clickHandler() {
    oneClick++;
        if (oneClick > 0) {
        $(".start-btn-wrapper").unbind("click");
    }
        newGame();
}

$(".start-btn-wrapper").bind("click", clickHandler);

$(".restart-btn").click(function () {
    resetGame();
    oneClick = 0;

    $(".start-btn-wrapper").bind("click", clickHandler);
});