Jquery:每个语句只影响第一项

Posted

技术标签:

【中文标题】Jquery:每个语句只影响第一项【英文标题】:Jquery: Each statement only affecting first item 【发布时间】: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” - 第三个 内的任何内容,我想要尝试做的是触发某些事情 【参考方案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
  
);

【讨论】:

以上是关于Jquery:每个语句只影响第一项的主要内容,如果未能解决你的问题,请参考以下文章

更改影响第一项的列表视图中最后一项的颜色

LSTM 批量大小和序列长度如何影响内存

jquery-2

为啥 Jquery 只影响第一个 div 元素? [复制]

Perl DBI - 获取事务中每个语句影响的记录

jquery ui自动完成仅显示数据库中的第一项