2017-02-16 96 views
0

我有#滑块5#滑块6#滑块7等的HREF值一堆元件。还有一堆其他元素与href值包含但在一个不同的模式。我想写的是只针对第二类元素选择逻辑,即那些含有在他们HREF但不是组合#slider。这是我写的:jQuery选择排除逻辑不工作

$('a[href*=#]:not([href=#], [href=#slider])') 

然而,这种逻辑似乎并没有兑现#slider排除逻辑。

我需要的是为它挑选所有标记,包含,但不包括以下:

  • 包含,并
  • 包含后跟单词滑块
+1

不是告诉你有一个“分子束”和“一堆元素”的,请张贴[MCVE] – j08691

+0

值在平等选择器应该在引号https://api.jquery.com/attribute-equals-selector/ –

+0

感谢至少试图帮助,菲尔。但是尽管引用了这个问题,问题仍然存在。 $('a [href * =“#”]:not([href =“#”],[href =“#slider”])') – TheLearner

回答

2

您可以使用选择:$('a[href*="#"]:not([href="#"], [href^="#slider"])')

1

不是试图实现一些奇怪的CSS选择器,而是使用.filter()函数来过滤元素。

$(document).ready(function() { 
 
    $('a') 
 
    .filter(function() { 
 
     return $(this).attr('href').indexOf('#slider-') == 0; 
 
    }) 
 
    .addClass('selected'); 
 
})
a { 
 
    text-decoration: none; 
 
    color: inherit; 
 
} 
 

 
.selected { 
 
    border-bottom: 1px solid red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="#slider-1">Slider-1</a><br/> 
 
<a href="#slider-2">Slider-2</a><br/> 
 
<a href="#slider">Slider</a><br/> 
 
<a href="#">#</a>