1

我无法理解这一点。

当我想从 a中删除类并将类添加到其中时,BdivD

有用。

D但是无法触发class的功能。

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

我尝试将 classD的函数放入 classB的函数中,如下所示:

$('.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 回答