内容目录
not()
函数用于从匹配元素中删除符合指定表达式的元素,并以jQuery对象的形式返回保留的元素。
这里的表达式包括:选择器(字符串)、DOM元素(Element)、jQuery对象、函数。
与该函数相对的是add()函数,用于向当前匹配元素中添加符合指定表达式的元素。
该函数属于jQuery
对象(实例)。
语法
jQueryObject.not( expr )
参数
参数 | 描述 |
---|---|
expr | String/Element/jQuery/Function类型指定的表达式。 |
如果expr
参数为字符串,则将其视作jQuery选择器,用以表示该选择器所匹配的元素。
jQuery 1.4 新增支持:参数expr
可以为jQuery对象或函数。
如果expr
参数为函数,not()
函数将根据匹配的所有元素遍历执行该函数,函数中的this
将指向当前迭代的元素。not()
还会为函数传入两个参数:第一个参数即当前元素在匹配元素中的索引,第二个参数就是当前元素。
迭代元素时,如果函数expr
的返回值为true
,则当前元素将被移除掉。
返回值
not()
函数的返回值为jQuery类型,返回一个新的jQuery对象,该对象封装了当前jQuery对象的匹配元素中所有不符合指定表达式的元素。
如果没有满足条件的元素(意即:全部元素都匹配指定的表达式,全部被过滤掉),则返回空的jQuery对象。
not()
函数并不会更改当前jQuery对象的元素匹配,筛选结果只反映在作为返回值的新的jQuery对象中。
示例&说明
not()
函数于:not()选择器具有如下等价代码:
// 这里的是selector、selector1均表示任意的选择器
$("selector").not("selector1");
// 等价于
$("selector:not(selector1)");
以下面这段HTML代码为例:
<div id="n1">
<div id="n2" class="n2">
<ul id="n3" data_id="12">
<li id="n4">item1</li>
<li id="n5" class="foo bar">item2</li>
<li id="n6" class="level-2">item3</li>
</ul>
</div>
<div id="n7" class="n7">
<input id="n8" name="username" type="text" value="1">
<input id="n9" name="orders" type="checkbox" checked="checked" value="1">
</div>
</div>
以下jQuery示例代码用于演示not()
函数的具体用法:
/* $("li") 匹配n4、n5、n6这3个元素 */
//排除掉n6,剩下2个元素n4、n5
document.writeln( $("li").not( "#n6" ).length ); // 2
//排除掉带类名foo的元素,剩下n4、n6
document.writeln( $("li").not( $(".foo") ).length ); // 2
//排除掉所有带有class属性的元素,剩下n4
document.writeln( $("li").not( "[class]" ).length ); // 1
/* $("input") 匹配n8、n9这两个元素 */
//排除掉被选中的元素,剩下n8
document.writeln( $("input").not( ":checked" ).length ); // 1
var input = document.getElementsByTagName("input");
//排除掉所有input元素,返回空的jQuery对象
document.writeln( $("input").not( input ).length ); // 0
/* $("div") 匹配n1、n2、n7这3个元素 */
//排除掉id和class属性相等的元素,剩下n1
var $result = $("div").not( function(index, element){
// 函数内的this === element
return this.id == this.className;
} );
document.writeln( $result.length ); // 1
0 条评论
撰写评论