0

http://jsfiddle.net/DfcdQ/

<ol id="nav">
<li><a href="a.php" class="selected">A</a>
  <ol class="child">
  <li><a href="a-1.php">A-1</a></li>
  </ol>
</li>
<li><a href="b.php">B</a>
  <ol class="child">
  <li><a href="b-1.php">B-1</a></li>
  <li><a href="b-2.php">B-2</a></li>
  </ol>
</li>
<li><a href="c.php">C</a>
  <ol class="child">
  <li><a href="c-1.php">c-1</a></li>
  <li><a href="c-2.php">c-2</a></li>
  <li><a href="c-3.php">c-3</a></li>
  <li><a href="c-4.php">c-4</a></li>
  </ol>
</li>
</ol>

当子菜单被选中时,它的父菜单也被选中。下面的代码适用于子 css,但不适用于父 css。

var loc = 'c-3.php';

$("#nav a").each(function() {
  $(this).removeClass("selected");
  if (loc.indexOf($(this).attr("href")) != -1) {
      $(this).addClass("selected");
      $(this).parent().addClass("selected"); /* <=== doesn't work :( */
  }
});

这个也不行。。。

$(this).closest('ol').parent().addClass("selected");
4

3 回答 3

1

你对父母感到困惑,这有效:http: //jsfiddle.net/DfcdQ/7/

var loc = 'c-3.php';

$("#nav a").each(function() {
   $(this).removeClass("selected");
   if (loc.indexOf($(this).attr("href")) != -1) {
       $(this).addClass("selected");
       $(this).parent().parent().siblings(':first').addClass("selected");
   }
});​

$(this).parent()指的是<li><a href="c-3.php">c-3</a></li>,不是指的<a href="c.php">C</a>

于 2012-07-22T09:23:43.333 回答
0

我同意 bingjie2680 但取决于您是否希望 c.php 锚具有选定的类(bingjie2680 解决方案)或围绕所有项目的 li(如下)。

$(this).parent().parent().parent().addClass("selected");

于 2012-07-22T09:23:48.807 回答
0

我已经根据最接近的情况进行了修改。

$(this).closest('ol').parent('li').find('a').addClass("selected");

这是工作 fiddel 链接http://jsfiddle.net/DfcdQ/12/

于 2012-07-22T09:46:43.750 回答