如何选择子项“a,span”但使用JQuery限制哪个范围?

时间:2012-12-10 12:43:43

标签: jquery jquery-selectors

我有以下内容:

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');
  }
}

2 个答案:

答案 0 :(得分:0)

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

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

这应该可以解决问题。

虽然您可能希望使用find代替children来获取所有范围:

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

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

答案 1 :(得分:0)

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

not选择器与指定的类

一起使用