我为页面转换编写了一个代码,但问题是我有很多(链接转到同一页面)要排除,我可以只做一行吗?
$('a')
.not('[href="#"]')
.not('[href="#navShow"]') // the problem
.not('[href="#navHide"]') // the problem
.not('[href="#about"]') // the problem
.click(function () {
});
答案 0 :(得分:3)
.not
接受一个选择器,包括selector group。所以:
$('a').not('[href="#"], [href="#navShow"], [href="#navHide"], [href="#about"]').click(function () {
});
或改为使用:not
(CSS docs,jQuery docs):
$('a:not([href="#"]):not([href="#navShow"]):not([href="#navHide"]):not([href="#about"])').click(function () {
});
(与.not
不同,:not
不能接受选择器组,只能接受一个简单的选择器。但我们可以在整个选择器中链接它们。)
那就是,您可以考虑为您为此选择或不想为此选择的a
元素添加一个类,并使用该类(有或没有not
取决于你去哪个方向)而不是单独进行href
检查。
答案 1 :(得分:0)
您还可以在CSS的:not
伪类选择器属性列表中链接多个逗号分隔的属性。下面显示的是带有font-weight的链接列表:粗体用于演示目的。
虽然这在桌面上至少运行Chrome和Safari,但我不确定它是否是当前标准的一部分,即将发布,还是非标准的。例如,我无法找到MDN上记录的行为,但我确实在a comment on SO中找到了它。
$('a:not([href="#b"], [href="#c"], [href="#e"])').each(function(idx, val) {
$(val).css('font-weight', 'bold');
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li><a href="#a">link a</a></li>
<li><a href="#b">link b</a></li>
<li><a href="#c">link c</a></li>
<li><a href="#d">link d</a></li>
<li><a href="#e">link e</a></li>
<li><a href="#f">link f</a></li>
</ul>
&#13;