1

jQueryには、divmarginTopをアニメーション化する次のコードがあります。

マージントップが900pxになったら、クリックイベントを無効にするように設定するにはどうすればよいですか?

$("#tmbUp").click(function(){ 
$("#tmbHolder").animate({"marginTop": "-=100px"}, "slow");
});

$("#tmbDown").click(function(){
$("#tmbHolder").animate({"marginTop": "+=100px"}, "slow");
});
4

3 に答える 3

2

関数を呼び出す前animateに、上部マージンの現在の値を確認するだけです。900(またはそれ以下)の場合は、アニメートしないでください。

于 2012-11-15T22:40:13.300 に答える
1

このanimateメソッドには、コールバック関数を受け取るオプションがあります。

あなたがしたいことはこのようなものです:

$("#tmbDown").click (function (){ 
  $("#tmbHolder").animate (
    {"marginTop": "+=100px"}, 
    "slow",
    "swing",
    // The callback function
    function () {
      if ($(this).css ('marginTop') >= "900px") {
        $("#tmbDown").unbind ('click');
      }
    }
  );
});
于 2012-11-15T22:43:01.017 に答える
1

marginTopが>= 900の場合にのみクリックイベントを無効にし、ユーザーがmarginTopを減らした場合に再度有効にすることを想定しています。animate 関数に組み込まれているコールバック関数を利用することをお勧めします。

$("#tmbUp").click(function(){ 
    $("#tmbHolder").animate({"marginTop": "-=100px"}, "slow", 
        function() {
            // if tmbHolder's marginTop < 900px, enable #tmbDown
        }
    );
});

$("#tmbDown").click(function(){
    $("#tmbHolder").animate({"marginTop": "+=100px"}, "slow", 
        function() {
            // if tmbHolder's marginTop >= 900px, disable #tmbDown
        }
    );
});

それがあなたのためにそれをすることを願っています。

于 2012-11-15T22:51:29.263 に答える