0

ダブルクリックするとページ全体に展開されるdivボックスがあります。divが展開されたときに生成されるボタンを押すと、divボックスが最小化されて元のサイズに戻ります。ただし、divボックスをダブルクリックすると、イベントが2回トリガーされ、divボックスが展開され、すぐに最小化されます。そこで、.one()を使用してみましたが、1回しか機能しないことに気づきませんでした。複数のイベントを発生させずに一度に1回のクリックのみを許可するには、何を使用できますか?これがjsbinで、以下は厳密にjqueryコードです。http://jsbin.com/eqezas/3/edit

$("#block").one('click', function(){
            $('#block1').hide();
  $("#block").animate({ 
    width: "100%",
    height: "100%",
    opacity: 0.4,
    fontSize: "3em", 

  }, 1500, function() {
    $('#but').show();  
     });


});


$('#but').one('click',function() {
            $('#block1').show();
      $("#block").animate({ 
    width: "100px",
    height: "40px",
    opacity: 1,
    fontSize: "1em", 

  }, 1500 );
            $('#but').hide(); 
    return false;

});
4

1 に答える 1

1

次のようなことを試してください:

var processing = false;  // Global variable

// Probably in document.ready:
$("#element").click(function () {
    if (!processing) {
        processing = true;
        $("#element2").animate({"blah": "blah"}, 1000, "easeOutBounce", function () {
            processing = false;
        });
    }
});

このように、元の要素を何度もクリックしても、アニメーションが完了するまで「処理中」の状態になります。

于 2012-09-27T05:57:26.360 に答える