禁用并启用div事件处理程序单击jQuery?

时间:2013-04-21 16:45:59

标签: jquery html click

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事件处理程序单击。但它不起作用。我读了一些主题,我没有解决问题。请帮助我?

3 个答案:

答案 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()将等待加载所有内容。这包括图像。