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

时间:2013-02-18 06:01:52

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

我有一系列页面,其标题存储在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>

4 个答案:

答案 0 :(得分:0)

为什么不呢:

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

答案 1 :(得分:0)

由于您的代码选择了第三个<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 :(得分:0)

你可以用更短的方式循环播放:

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

注意:

使用.text()代替.html()

答案 3 :(得分:0)

尝试使用此脚本

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