代码之家  ›  专栏  ›  技术社区  ›  DA.

通过jQuery对象查找最后一个循环

  •  0
  • DA.  · 技术社区  · 16 年前

    示例jquery。假设$cog是多个项目的缓存选择器。

    $cog.fadeOut('slow',function(){
        alert('hey');
    })
    

    在那个例子中,$cog是一个包含4个DOM元素的jQuery对象,上面的内容将逐个淡出每个元素,并在每次回调时触发一个警报(4个警报)。

    我只想在所有4个元素都完成淡出功能时调用警报。

    $cog.fadeOut('slow',function(){
    })
    alert('hey');
    

    对jQuery对象中的多个DOM对象调用函数时,有没有方法知道最后一项何时完成?

    2 回复  |  直到 16 年前
        1
  •  2
  •   spender    16 年前

    您可以简单地计算回调。

    试试这个:

    var remaining=$cog.length;
    $cog.fadeOut('slow',function(){
        if((--remaining)==0)alert('hey');
    })
    
        2
  •  1
  •   cletus    16 年前

    请尝试以下示例:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script type="text/javascript">
    $(function() {
      var items = $("li");
      $("#btn").click(function() {
        (function() {
          var items = $("li");
          items.fadeOut("slow", function() {
            items = items.not(this);
            console.log(items.length);
            if (items.length == 0) {
              alert("all done");
            }
          });
        })();
      });
    });
    </script>
    <style type="text/css">
    </style>
    </head>
    <body>
    <input type="button" id="btn" value="Fade Out">
    <ul>
      <li>one</li>
      <li>two</li>
      <li>three</li>
    </ul>
    </body>
    </html>