3

私はクリックを 4 回だけ機能させようとしています。

 $(document).ready(function(){
   i=0;
   if(i<3){
     $('#nums').click(function(){
       $('#pic').stop().animate({top:'-=384px'},'300');
       i++;
     });        
   }else{
     $('#nums').click(function(){
       $('#pic').stop().animate({top:'+=384px'},'300'); 
     });
   }
});
4

4 に答える 4

1

「if else」の周りに .click をラップする必要があります。このようなもの:

$(document).ready(function(){
    var i=0;
    $('#nums').click(function(){
    if(i<3){
        $('#pic').stop().animate({top:'-=384px'},'300');
    i++;
        }else{
        $('#pic').stop().animate({top:'+=384px'},'300');    
        }
    });
});
于 2013-06-26T12:45:32.417 に答える
0

代わりに、イベント ハンドラー内にロジックを配置することを検討してください。

HTML

<button>test</button>

JavaScript

var timesClicked = 0;

$("button").on("click", function(){
    timesClicked++;

    alert(timesClicked);
    //Insert the code you want to execute when the button is clicked here.


    if(timesClicked >= 4){
        $(this).off("click").prop("disabled", true);
    }
});

于 2013-06-26T12:50:02.283 に答える
0

ドキュメント準備完了関数は 1 回だけ呼び出されるため、if(i<3) を 1 回だけループすることはありません。次のように条件をクリック関数に設定する必要があります。

    var i=0;
    $('#nums').click(function(){
         console.log('click', i);
         if(i<3){
              $('#pic').stop().animate({top:'-=384px'},'300');
              i++;
         }else{
              $('#pic').stop().animate({top:'+=384px'},'300');    
         }
   });

代わりに、次のようなことをお勧めします。

    var i=0;
    $('#nums').click(function(){
        console.log('body click', i);
        var target_top = (i < 3) ? '-=384px' : '+=384px';
        $('#pic').stop().animate({top: target_top},'300');
        i++;
    });
于 2013-06-26T12:57:43.657 に答える