[英]Jquery: Each statement only affecting first item
我有一系列页面,其标题存储在var中。
我想创建一个脚本,对相应的导航链接页面执行某些操作。 在我的网站上,标题和导航链接的名称是相同的,因此我只使用if和每个语句,如下所示:
$.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>
为什么不只是:
$.each($("#menu a"), function() {
if($(this).html() == pagetitle){
//DO SOMETHING
}
});
由于您的代码正在选择第三个<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
这个小提琴的例子
您可以使用以下更简短的方式循环遍历:
$.each($("#menu li"), function() {
if($(this).find("a").text() == pagetitle){
//DO SOMETHING
}
});
使用.text()
而不是.html()
尝试使用此脚本
$("#menu").find("li").each(function(){
if ($(this).find('a').html() == pagetitle) {
// do
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.