var times = 0;
jQuery(window).load(function(){
$(".banana").click(function(){
console.log(times);
times++;
if(times == 3){
$("#b1").unbind('click');
}
if(times == 6){
$("#b1").bind('click');
}
});
});
和HTML代码:
img id="b1" src=".../" class="banana"
img src=".../" alt="" class="banana"
我有前面的例子,因为当我尝试启用div事件处理程序单击。但它不起作用。我读了一些主题,我没有解决问题。请帮助我?
答案 0 :(得分:1)
你忘记了课程的点(选择器应该是$('.banana')
。
var times = 0;
jQuery(window).load(function(){
$(".banana").click(function(){
console.log(times);
times++;
if(times == 3){
$("#b1").unbind('click');
}
if(times == 6){
$("#b1").bind('click');
}
});
});
答案 1 :(得分:1)
您想要的是防止可怕的点击事件堆叠。有不同的处理方式,但在基本方面,它们都设置了布尔值。
在您的示例中,我已将#data标签设置为#choices容器,其值为false
。单击后,我将布尔值更改为true
。基本上如果processing=false
我在点击回调中执行代码。
$("#choices").data('processing', false);
$("#rock").click(function () {
if (!$(this).parent().data('processing')) {
$(this).parent().data('processing', true);
user = roPaSc[0];
gamePlay();
}
});
$("#paper").click(function () {
if (!$(this).parent().data('processing')) {
$(this).parent().data('processing', true);
user = roPaSc[1];
gamePlay();
}
});
$("#scissors").click(function () {
if (!$(this).parent().data('processing')) {
$(this).parent().data('processing', true);
user = roPaSc[2];
gamePlay();
}
});
动画完成后,需要重置布尔值。我在“else-statement”中的openEyes函数中执行此操作。
else {
$("#you").attr({
'src': user
});
$("#computer").attr({
'src': com
});
$("#choices").data('processing', false);
}
以下是“摇滚剪刀”的调整小提琴:http://jsfiddle.net/gpxxn/2/
答案 2 :(得分:0)
这不是您的问题的答案,而是对您的代码提出一些建议。
使用“文档就绪”而不是加载。
$(window).load(function(){...
替换为
$(document).ready)function(){...
他们都会为你工作,但有一点点差异。 “ready”将在加载页面结构后立即将事件绑定到元素,但仍然在加载内容之前。
$(window).load()将等待加载所有内容。这包括图像。