从之前的学习中我们可以知道,hasClass()、is()等方法都是过滤“符合条件”的元素。在jQuery中,我们还可以使用not()方法来过滤“不符合条件”的元素,并且返回余下符合条件的元素。
其中,not()方法可以使用选择器过滤,也可以使用函数过滤。
语法:
$().not(selector或fn)
说明:
当not()方法参数是一个选择器时,表示使用选择器来过滤不符合条件的元素,然后选取余下元素。
当not()方法参数是一个函数时,表示使用函数来过滤不符合条件的元素,然后选取余下元素。
举例:选择器过滤
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="js/jquery-1.12.4.min.js"></script>
<script>
$(function () {
$("li").not(".select").css("color", "red");
})
</script>
</head>
<body>
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JavaScript</li>
<li class="select">jQuery</li>
<li>Vue.js</li>
</ul>
</body>
</html>
浏览器预览效果如图所示。
$("li").not(".select")
表示选取除了class为select以外的所有li元素。实际上,下面两行代码是等价的:
$("li").not(".select").css("color", "red");
$("li:not(.select)"). css("color", "red");
not()方法与:not选择器相似,这个跟eq()方法与:eq()选择器相似是一样的道理。
举例:函数过滤
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="js/jquery-1.12.4.min.js"></script>
<script>
$(function () {
$("li").not(function(){
return $(this).text() == "jQuery";
}).css("color", "red");
})
</script>
</head>
<body>
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JavaScript</li>
<li>jQuery</li>
<li>Vue.js</li>
</ul>
</body>
</html>
浏览器预览效果如图所示。
分析:
$("li").not(function(){return $(this).text() == "jQuery";})
表示选取内部文本不是为“jQuery”的li元素。