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】:由于您的代码选择第三个<ul>
,它只会找到一次<ul>
.. 您必须选择直到<li>
....
我想你错过了<li>
那里
$.each($("#menu ul li ul li ul li"), function()
if($(this).find("a").html() == pagetitle)
//DO SOMETHING
);
注意:这仅适用于第三个<ul>
我认为这就是您所要求的..
如果都是<li>
,那么你可以使用
$.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:每个语句只影响第一项的主要内容,如果未能解决你的问题,请参考以下文章