繁体   English   中英

jQuery:每个语句仅影响第一项

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM