1

私はこれを理解できません。

からクラスを削除してクラスを追加したい場合、BdivD

できます。

しかし、 classDの関数はトリガーできません。

$('.B').click(function() { 
        $('.A').animate({
           "left": "+=10%"
        },{
           duration:1000,
           complete: function(){
              $("#C").addClass("D").removeClass("B");
              } 
           }); 
});  



 $(".D").click(function() { 
        $(".A").animate({
            "top":"+=40%"
        },{
            duration:2000,
            complete:function(){
                 $("#C").addClass("B").removeClass("D");
             }
          });
}); ​

D次のように、 class の関数を class の関数に入れてみましたB

$('.B').click(function() { 
        $('.A').animate({
           "left": "+=10%"
        },{
           duration:1000,
           complete: function(){
              $("#C").addClass("D").removeClass("B");
              $(".D").click(function() { 
                   $(".A").animate({
                       "top":"+=40%"
                   },{
                       duration:2000,
                       complete:function(){
                           $("#C").addClass("B").removeClass("D");
                       }
                   });
               }); ​
              } 
           }); 
});  

両方の機能が初めて機能し、その後、奇妙な方法で動作します。

誰かが私に理由を説明し、解決策を提供していただければ幸いです。

4

1 に答える 1

4

を使用すると、その時点で$.clickの選択に一致する要素のみにバインドされます。今後の要素もすべて一致させたい場合は、代わりに次を使用します。$.on

$("body").on("click", ".D", function(){
  /* Class D Stuff */
});

これは、クリックされた要素が最初から必要だったのか、class="D"後で$(this).addClass("D").

パーツは、"body"理想的には、クリックした要素に非常に近いコンテナーである必要があります。たとえば、次のような場合:

<body>
  <div id="container">
    <a href="#" class="B">Foo</a>
    <a href="#" class="D">Bar</a>
  </div>
</body>

jQuery 関数の#container代わりに使用する必要があります。body

于 2012-05-05T07:23:25.603 に答える