使用Jquery,我如何选择除了,排除某些孩子?

时间:2015-05-13 17:23:57

标签: javascript jquery

我有以下结构:

<div class="container main-navigation">
<div class="col-md-9 text-left float-right collapse-navation">
   <div class="navbar-collapse collapse navbar-inverse no-transition">
      <ul class="nav navbar-nav navbar-right">
           <li><a href="#about">Bla bla</a></li>
           <li><a class="langSelection" href="#about">Bla bla</a></li>

我有一个调用的脚本:

$('.main-navigation')
            .onePageNav({
                scrollThreshold: 0.2,  
                scrollOffset: 79 
            });

问题是,我希望不要将此应用于所有锚点,但希望排除那些具有名为langSelection的类的人。

试过这个,但没有骰子:

$('.main-navigation').not(".langSelection")
            .onePageNav({
                scrollThreshold: 0.2, 
                scrollOffset: 79 
            });

我会更多地指定选择器但是,插件“onePageNav”似乎需要选择某个元素才能正常工作。

我可以请别人帮忙吗?

更新: 看来,我们实际上可以改变选择器。因此,任何确实改变选择器特异性的解决方案都可行。

3 个答案:

答案 0 :(得分:1)

您可以使用jQuery&#39; :not伪选择器直接排除某些元素。在这种情况下,您可以将类指定为非条件:

&#13;
&#13;
$("#match").on("click", function() {
  $("a:not(.langSelection)").each(function(elem) {
    $(this).css('color', 'green');
  });
});
&#13;
a {
  color: red;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a>1</a>
<a class="langSelection">2</a>
<a>3</a>
<button id="match">Match!</button>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

以下是一个示例:http://jsfiddle.net/gve76ryb/

<div class='container'>
    <a>yes</a>
    <a>yes</a>
    <a>yes</a>
    <a class='exclude'>no</a>
    <a>yes</a>    
</div>

脚本:

$(function(){
    $(".container a:not(.exclude)").css({color: 'red'});
});

你可以使用:not css selecor或.not()jquery selector。

答案 2 :(得分:0)

$('.main-navigation a').not(".langSelection")
            .onePageNav({
                scrollThreshold: 0.2, 
                scrollOffset: 79 
            });

你只需要将锚(a)添加到你的选择器吗?