我有一堆 元素, href 值为#slider-5 ,#slider-6 ,#slider-7 ,依此类推。还有一些其他 元素, href 值包含#,但格式不同。我想编写一个选择器逻辑,仅针对第二种 元素,即 href 中包含#的元素,但不包含<<>强> #slider 即可。这就是我写的:
$('a[href*=#]:not([href=#], [href=#slider])')
但是,这种逻辑似乎并不尊重 #slider 排除逻辑。
我需要选择包含 的所有 标记,但不包括以下内容:
答案 0 :(得分:2)
您可以使用选择器:$('a[href*="#"]:not([href="#"], [href^="#slider"])')
答案 1 :(得分:1)
使用.filter()
函数来过滤元素,而不是尝试实现一些奇怪的CSS选择器。
$(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>