我怎样才能打破jQuery中的each()?

时间:2011-09-29 01:26:38

标签: javascript jquery

我有以下HTML + JS。我希望toggleButton只切换第一个io-section-header。最终我将有多个toggleButton,它将切换一个唯一的ul。

我怎样才能做到这一点?

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <div><span>Section 1</span></div>
  <div class="io-section-header">
  <ul>
    <li class="advanced">Accounts</li>
    <li class="advanced">People</li>
    <li class="advanced">companies</li>
    <li class="basic">She</li>
  </ul>
   <div><span>Section 2</span></div>
   <div class="io-section-header">
    <ul>
    <li class="advanced">Accounts</li>
    <li class="advanced">People</li>
    <li class="advanced">companies</li>
    <li class="basic">P</li>
  </ul>
  </div>
  </div>

  <div class="toggleButton">Collapse</div>

<script>
    jQuery(function ($) {
        $('.toggleButton').click(function () {  
            var currentText = $(this).text();
            if(currentText === "Collapse")
                $(this).text("Expand");
            else
                $(this).text("Collapse");

            /*$('.io-section-header').each(function() {
                $("li").siblings(".advanced").toggle('fast',function(){});
            });*/

            $('.io-section-header li').siblings(".advanced").toggle('fast'); 

        });
    });
</script>

</body>
</html>

3 个答案:

答案 0 :(得分:4)

来自.each() documentation

  

我们可以通过使回调函数返回false来在特定迭代中中断$ .each()循环。返回非false与for循环中的continue语句相同;它将立即跳到下一次迭代。

答案 1 :(得分:1)

这将切换每个io-section-header类的第一个高级类

$('ul li.advanced:first', '.io-section-header').toggle('fast',function(){});

这将切换第一个io-section-header类

中的第一个高级类
$('ul li.advanced:first', '.io-section-header:first').toggle('fast',function(){});

答案 2 :(得分:0)

return false就是你所需要的;你为什么不使用first()