【问题标题】:Jquery: Each statement only affecting first itemJquery:每个语句只影响第一项
【发布时间】:2013-02-02 12:47:29
【问题描述】:

我有一系列页面,其标题存储在 var 中。

我想创建一个脚本来对页面对应的导航链接做一些事情。在我的网站上,导航链接的标题和名称是相同的,所以我只使用 if 和 each 语句,如下所示:

$.each($("#menu ul li ul li ul"), function() {
  if($(this).find("a").html() == pagetitle){
    //DO SOMETHING
  }
});

问题是,这似乎只循环一次。它只抓取第一个 li 和一个标签,因此只能在一个页面上工作。

任何人都可以提出纠正这个问题的方法吗?

编辑:html:

<div id="menu">
    <ul>
    <li><a href="somewhere.html">enu Item</a>
      <ul>
        <li><a href="somewhere.html">Menu Item 2</a>
            <ul>
               <li><a href="somewhere.html">Menu Item 3</a></li>
               <li><a href="somewhere.html">Menu Item 4</a></li>
               <li><a href="somewhere.html">Menu Item 5</a></li>
               <li><a href="somewhere.html">Menu Item 6</a></li>
             </ul>
        </li>
        <li><a href="somewhere.html">Menu Item 7</a></li>
        <li><a href="somewhere.html">Menu Item 8</a></li>
      </ul>   
    </li>
    </ul>
</div>

【问题讨论】:

  • @bipen 添加在上面 - 真的没什么特别的,只是一个嵌套的菜单列表。如果页面标题是“菜单项 4”或“菜单项 5” - 第三个
      内的任何内容,我想要尝试做的是触发某些事情

    标签: javascript jquery if-statement jquery-selectors each


    【解决方案1】:

    由于您的代码选择第三个&lt;ul&gt;,它只会找到一次&lt;ul&gt;.. 您必须选择直到&lt;li&gt; .... 我想你错过了&lt;li&gt;那里

     $.each($("#menu ul li ul li ul li"), function() {
       if($(this).find("a").html() == pagetitle){
    //DO SOMETHING
     }
    });
    

    注意:这仅适用于第三个&lt;ul&gt; 我认为这就是您所要求的.. 如果都是&lt;li&gt;,那么你可以使用

    $.each('#menu li')... //as a selector
    

    fiddle 中的示例

    【讨论】:

      【解决方案2】:

      为什么不只是:

      $.each($("#menu a"), function() {
        if($(this).html() == pagetitle){
          //DO SOMETHING
        }
      });
      

      【讨论】:

        【解决方案3】:

        您可以像这样以更短的方式循环:

        $.each($("#menu li"), function() {
          if($(this).find("a").text() == pagetitle){
             //DO SOMETHING
          }
        });
        

        注意:

        使用.text() 而不是.html()

        【讨论】:

          【解决方案4】:

          尝试使用这个脚本

          $("#menu").find("li").each(function(){
            if ($(this).find('a').html() == pagetitle) {
              // do
            }
          });
          

          【讨论】:

            猜你喜欢
            • 2013-05-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-06-20
            • 2017-01-06
            • 2016-12-17
            • 1970-01-01
            相关资源
            最近更新 更多