在我的游戏中,我想确保每次出现按钮时只点击一次,以阻止它多次加载该功能。
如果计数大于零,我编写了一些计算点击次数和解除绑定的代码。
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;
});
出于某种原因,这不能胜任这项工作,而我正在寻求解决方案
答案 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);
});