2013-04-21 103 views
2
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事件处理程序点击jQuery?

我已经前面的例子,当我尝试启用格事件处理程序点击。但它不干活看了一些主题,比如我它不能解决问题。请帮助我?

+0

我没有一个解决方案,但这个问题似乎是与绑定功能,因为其它功能如预期进行操作: http://jsfiddle.net/NotInUse/YQFwz/2/ – Scott 2013-04-21 17:34:02

回答

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

thnk.But它不起作用,因为当'times'达到** 6时我想启用'click .b1' ** – haind 2013-04-21 16:53:39

+0

啊是的..你的其他选择器也是错误的:)应该是'#'而不是''',因为b1是'id' – Kaloyan 2013-04-21 16:56:36

+0

是的。我纠正了错误,但当'times'达到** 3时'div'被'禁用' *但在达到** 6时无法启用** ** – haind 2013-04-21 17:04:01

0

这不是回答你的问题,但在你的代码一点点建议。

使用“文件准备的“,而不是负载。

$(window).load(function(){... 

替换

$(document).ready)function(){... 

他们都会为你工作,但有细微的差异。 “准备就绪”会在加载页面结构之后立即将事件绑定到元素,但仍然在加载内容之前。

$(window).load()将等待所有内容被加载。这包括图像。

+0

我使用'$(window).load(function(){...',因为有时候我想要在点击图片之前加载所有图片 – haind 2013-04-21 17:08:35

+0

结构是loaeded的,意思是图片标签在那里,只是图片不是如果没有任何图像,那么我在哪里点击以...例如,淡入淡出图像。我们如何能够将文档上的事件绑定到“img”-tag – Daniel 2013-04-21 17:46:26

+0

我不明白。是吗? – haind 2013-04-21 18:07:52

1

你想要的是防止可怕的堆栈点击事件。有不同的处理方法,但基本上它们都是以设置布尔值为准。

在你的例子中,我已经为你的#choices容器设置了一个data()标签,以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语句”中的openEyes函数中执行此操作。

else { 
      $("#you").attr({ 
       'src': user 
      }); 
      $("#computer").attr({ 
       'src': com 
      }); 
      $("#choices").data('processing', false); 
     } 

这里是“剪刀,石头,布”的调整小提琴:http://jsfiddle.net/gpxxn/2/

+0

thnks'丹尼尔'为上面的例子,但他们不是我在找什么。就像主题的名称,我只想知道如何禁用和启用** div **,当我点击。难以解释。这是所有我认为与**摇滚,纸张,剪刀**游戏:http://jsfiddle.net/haind/gpxxn/ – haind 2013-04-22 03:11:29

+0

但我有doubleClick或三次点击岩石,纸张,剪刀时遇到麻烦可以运行2到3次,做相同的事情。我想在显示结果之前,点击div应该被禁用,当显示结果时启用 – haind 2013-04-22 03:21:36