2

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

4 回答 4

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

小提琴中的例子

于 2013-02-18T06:10:41.510 回答
0

尝试使用这个脚本

$("#menu").find("li").each(function(){
  if ($(this).find('a').html() == pagetitle) {
    // do
  }
});
于 2013-02-18T06:18:55.803 回答
0

您可以像这样以更短的方式循环:

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

笔记:

使用.text()而不是.html()

于 2013-02-18T06:15:11.177 回答
0

Why not just:

$.each($("#menu a"), function() {
  if($(this).html() == pagetitle){
    //DO SOMETHING
  }
});
于 2013-02-18T06:06:19.000 回答