0

我有以下内容:

a = li.parent().parent().children('a, span');

我有一个循环设置,它从一个链接开始并沿着链条上升。如果我理解正确,那么上面的代码会选择一个链接(如果它后面有一个跨度)。因此它正确选择:

   <a ..>..<span>History</span> .. </a> and
   <a ..>..<span>Overview</span> .. </a>

但是我不希望它选择:

   <a ..> ..<span class="toggle"></span>

来自以下 HTML:

<ul id="menu" class="arbo with-title">
   <li>
      <a class="title-a">
         <span>Overview</span></a>
      <ul>
         <li>
            <span class="toggle"></span>
            <a class="folder"><span>Background</span></a>
            <ul>
               <li><a data-href="/History" class="document-web"><span>History</span></a></li>
               <li><a data-href="/eatures" class="document-web"><span>Features</span></a></li>
               <li><a data-href="/Design-Goals" class="document-web"><span>Design Goals</span></a></li>
            </ul>
         </li>
         <li>

有没有一种方法可以让这个问题顶部的选择不会注意到切换类的跨度?就像是:

a = li.parent().parent().children('a, span(only if the element does not have a class of togggle)');

仅供参考,这是循环代码:

function populateBreadcrumb(a: JQuery, $breadcrumb: JQuery) {
  while (a.length > 0) {
     $breadcrumb.prepend('<li><a >'+a.html()+'</a></li>');
     var li = a.parent();
     a = li.parent().parent().children('a, span');
  }
}
4

2 回答 2

0
a = li.parent().parent().children('a, span:not('.toggle')"));

使用not指定类的选择器

于 2012-12-10T12:48:07.777 回答
0

您可以使用:not选择器执行此操作:

a = li.parent().parent().children("a, span:not(.toggle)");

这应该可以解决问题。

尽管您可能想要使用find而不是children获取所有跨度:

$("#menu").find("a, span:not(.toggle)");

jsfiddle:http: //jsfiddle.net/mGv6N/

于 2012-12-10T12:46:41.180 回答