Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery绑定,取消绑定_Jquery_Jquery Click Event - Fatal编程技术网

Jquery绑定,取消绑定

Jquery绑定,取消绑定,jquery,jquery-click-event,Jquery,Jquery Click Event,我正在将一些单击事件绑定到我拥有的一些图像。单击其中一个图像时,我希望禁用所有图像,然后在两秒钟后添加回相同的单击事件 到目前为止,我有以下几点: $('#pagination img').each(function(index){ $( this ).bind ("click",function(){ pageClick = true; pagendex = index*9; clearInte

我正在将一些单击事件绑定到我拥有的一些图像。单击其中一个图像时,我希望禁用所有图像,然后在两秒钟后添加回相同的单击事件

到目前为止,我有以下几点:

 $('#pagination img').each(function(index){
        $( this ).bind ("click",function(){
               pageClick = true;
               pagendex = index*9;
           clearInterval(progresstracker);

             $("#progressbar").progressbar( "option", "value", 0);
             numSecondsPassed=0;
             $('#pagination img').each(function(index){
                $(this).unbind('click');

             });

            // alert("Page Index" + pageIndex);
              rotateImage();

             }).mouseover(function(){
                  $(this).css("cursor","pointer");
            });
        });
我正在解除绑定,这是可行的。但我需要在两秒钟后使用相同的变量将它们绑定回click事件,然后再次解除绑定。基本上,当它们单击解除绑定2秒钟后,再重新绑定。请重复此操作。

您可以在解除绑定2秒钟后重新安排绑定。这可能意味着提取绑定/取消绑定的函数


就在我的脑海里,我在想这样的事情:

var bindAll = function () {
  $("...").each(function (index, item) {
     item.bind("click", function (event) {
          // ... do your work 
          unbindAll();
     });
};

var undbindAll = function () {
     $("...").unbind('click');
     setTimeout(bindAll, 2000);
} 

现在假设您想要为所有图像解除事件绑定,我明白了吗?很抱歉,如果我遗漏了一些内容,或者这在您的情况下不起作用…

我不会取消绑定,因为您可以使全局变量跟踪,如果您可以单击按钮或不这样做:

<html>
<head>
<script type="text/javascript" src="jquery-1.6.2.min.js"></script>
<script type="text/javascript">
    var buttonClickable = true;
$(document).ready(function() {
    $(".button").click(function() {
        if (buttonClickable)
        {
            $("body").append($(this).text());
            buttonClickable = false;
            setTimeout("buttonClickable = true; alert('passed');",2000);
        }
        else
        {

        }
    });
});
</script>
</head>
<body>
<div class="button">Button1</div>
<div class="button">Button2</div>
</body>
</html>

var buttonClickable=true;
$(文档).ready(函数(){
$(“.button”)。单击(函数(){
如果(按钮可点击)
{
$(“body”).append($(this.text());
buttonClickable=false;
setTimeout(“buttonClickable=true;警报('passed');”,2000);
}
其他的
{
}
});
});
按钮1
按钮2

我尝试使用超时,但在setTimeout()函数中,我使用了与上面完全相同的代码,这不起作用,因为在我看来,这就像意大利面条代码一样。有没有一个例子?我在考虑为绑定事件的函数创建一个var,并在undbinds的子函数中,使用相同的函数调用setTimeout(现在可以这样做,因为该函数有一个名称)。现在,由于您在迭代器中使用它,它可能与您编写的代码不完全相同,这是对的。这是一个很好的解决方案,比所有这些无绑定的混乱更干净。而且比每次单击两次遍历列表要快得多