1

私はいくつかのクリックイベントを私が持っているいくつかの画像にバインドしています.それらの1つがクリックされると、すべての画像を無効にしてから2秒後に同じクリックイベントを追加します.

これまでのところ、次のものがあります。

 $('#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");
            });
        });

私はそれらをアンバインドしていますが、それは機能します.しかし、2秒後に同じ変数を使用してクリックイベントにバインドし、再度バインドを解除する必要があります.

4

2 に答える 2

0

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);
} 

これは、すべての画像のイベントをバインド解除することを前提としていますが、理解できましたか? 申し訳ありませんが、何かを見逃した場合、またはこれがうまくいかない場合は...

于 2011-07-14T10:07:14.100 に答える
0

ボタンをクリックできるかどうかを追跡するグローバル変数を作成できるため、バインドを解除しません。

<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>
于 2011-07-14T10:24:08.153 に答える