Jquery Bind, Unbind - PullRequest
       25

Jquery Bind, Unbind

1 голос
/ 14 июля 2011

Я связываю некоторые события щелчка с некоторыми изображениями, которые у меня есть. Когда щелкает одно из них, я хочу отключить все изображения, а затем через две секунды добавить одно и то же событие щелчка.

У меня есть следующеедо сих пор:

 $('#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 с теми же переменными и снова связать. В основном, когда они нажимают, unbind в течение 2 секундзатем вернитесь и повторите промывку.

Ответы [ 2 ]

0 голосов
/ 14 июля 2011

я бы не делал unbind, так как вы можете сделать глобальную переменную, которая отслеживает, если вы можете нажать кнопку или нет, как:

<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>
0 голосов
/ 14 июля 2011

Вы можете использовать setTimeout () , чтобы переназначить привязку через 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);
} 

Теперь предполагается, что вы хотите отменить привязку события ко всем изображениям, я правильно понял? Извините, если я что-то пропустил или это не работает в вашем случае ...

...