您的位置:首页 > Web前端 > JQuery

jquery之管理包装元素集合(筛选元素包装集之整理包装集的内容,not()方法与filter()方法的使用)

2011-03-26 15:17 1011 查看
jquery之管理包装元素集合(筛选元素包装集之整理包装集的内容,not()方法与filter()方法的使用)

----------

在jquery里调用add()方法,把多个选择器链在一起形成"或"关系,从而创建包装集,是简单的事情。除此之外,通过调用not()方法把选择器链在一起形成"与非"关系,也是可以的。这与前面讨论过的:not选择器有相似之处。然而,调用方式却与add()方法相似,即在jquery命令链的任何一环,从包装集里删除元素。假定想要选择页面带有title属性的所有<img>元素,除title属性值包含文本puppy的元素以外。可以想到能够表达这个条件的一个选择器,即:

]img[title]:not([title*=puppy])


但为了举例说明,假定忘记了:not筛选器。通过调用not()方法,从包装集里删除任何与传入选择器表达式相匹配的元素,从而表达"与非"关系类型。为了进行上述匹配,可以编写:

]$('img[title]').not('[title*=puppy]')


请注意,传递给not()方法的选择器仅限删除任何元素引用的筛选表达式。如果错误地传递了更加显示的选择器img[title*=puppy]给not()方法,就无法得到预期结果,因为not()方法不支持元素选择器。

not()语法:

not(expression)

根据表达式参数的值,从包装集里删除元素。如果参数是jquery筛选选择器,则从包装集里删除任何匹配表达式的元素。如果参数是元素引用,则从包装集里删除该元素。

参数

expression (字符串|元素|数组)jquery筛选器表达式、元素引用或元素引用的数组,定义从包装集里删除的元素。

-----

有时候,筛选包装集的方式难以或不可能用选择器表达式表达出来。在这种情况下,必须求助于编程方式去筛选包装集里的元素。迭代包装集的所有元素,调用not(element)方法删除不符合选择标准的元素。但是,jquery不想让用户被迫亲自做这一切工作,所以定义了filter()方法。filter()方法,当传给它一个函数,它会为每个包装集元素反复调用那个函数,如果哪个元素的函数调用返回false值,就删除哪个元素。利用筛选函数体的函数上下文(即this),每次调用都能存取当前包装集元素。

例如,假定出于某种理由,想要创建包含数字值的所有<td>元素的包装集。如:

]$('td').filter(function(){return this.innerHTML.match(/^/d+$)})


这个jquery表达式首先创建所有<td>元素的包装集,然后为每一个包装集元素各调用一次传递给filter()方法的函数,并且将当前包装集元素作为当次调用的this值。函数利用正则表达式确定元素内容是否匹配已描述的模式,如果不匹配,则返回false。筛选函数调用返回false的任何元素,都会从包装集里删除。

filter()语法:

filter(expression)

利用传入的选择器表达式或筛选函数,从包装集里筛选元素。

参数

expresson (字符串|函数)如果参数是字符串,则指定jquery选择器,用于从包装集里删除所有与选择器不匹配的元素,也就是说,留下与选择器匹配的元素;如果参数是函数,则用于确定筛选条件。为包装集里的每一个元素各调用一次该函数,以当前元素作为当次调用的函数上下文(this).函数调用返回值为false的任何元素都会从包装集里删除。

如例:

]$('img').addClass('seeThrough').filter('[title*=dog]').addClass('thickBorder')


这个命令链语句选择所有图像,并对所有图像应用seeThrough类,然后缩小集合,只留下title属性包含文本dog的图像元素,接着对留下的元素应用另一个名为thickBorder的类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐