首页 > 代码库 > jQuery -> 获取元素的各种过滤器(filter)

jQuery -> 获取元素的各种过滤器(filter)

通过顺序来选择

顺序选择的过滤器(filter)有
:first
第一个元素
:last
最后一个元素
:even
序号为偶数的元素
:odd
序号为奇数的元素
:eq(n)
序号等于n的元素
:lt(n)
序号小于n的元素
:gt(n)
序号大于n的元素
如果有如下的表格
0even
1odd
2even
3odd
4even
html代码如下
<table>
 <tr><td>0</td><td>even</td></tr>
 <tr><td>1</td><td>odd</td></tr>
 <tr><td>2</td><td>even</td></tr>
 <tr><td>3</td><td>odd</td></tr>
 <tr><td>4</td><td>even</td></tr>
</table>
如果需要修改所有序号为偶数的tr的式样,用jQuery则可以非常简单的实现
$("tr:even").addClass('even')
even是在css中定义的式样
table tr.even {
    background: #CCC;
}
添加even式样后,表格如下所示
0even
1odd
2even
3odd
4even
jQuery也提供了filter函数
$('ul li').filter(':first');

选取正在执行动画的元素

过滤器是:animated
用法如下
$('div:animated'); // #1
$('div:not(div:animated').animate({height:100}); // #2
也可以使用动画过滤器来判断元素是否正在执行动画
var myElem = $('#elem');
if (myElem.is(':animated')) {
   // do something
}

根据包含的内容来选择元素

过滤器:has(), contains()
用法如下
如果要选取包含特定文字的元素,可以使用contains
HTML
<span>Hello Bob!</span>
JS
$(‘span:contains("Bob")); # contains参数区分大小写,可以不需冒号

通过has来使用selector
$(‘div:has(p a)‘);

逆向选择

过滤器 not
not的参数也是一个selector
$(‘div:not(#content))
当然也可以使用复杂的selector
$(‘a:not(div.important a, a.nav)‘);
jQuery也提供了not方法
var anchors = $(‘a‘);
anchors.click(function() {
   anchors.not(this).addClass(‘not-clicked‘);
});

通过是否可见来选择元素

选择器 hidden, visible
用法如下所示
if ($(‘#elem‘).is(‘:hidden‘)) {
    // Do something conditionally
}
$(‘p:visible‘).hide();

基于属性来选择元素

过滤器
[attr]
是否具有此属性
[attr=val]
attr属性是否等于val
[attr!=val]
attr属性不等于val
[attr^=val]
attr属性以val开头
[attr$=val]
attr属性以val结尾
[attr~=val]
attr属性包含val
[attr]
是否具有此属性
用法
$(‘a[href=http://www.mamicode.com/"http://google.com"]‘);>
连续使用多个属性过滤器
$(‘*[title][href]‘)

根据元素类型来选择

过滤器
jQuery selector syntaxSelects what?
:text<input type="text" />
:password<input type="password" />
:radio<input type="radio" />
:checkbox<input type="checkbox" />
:submit<input type="submit" />
:image<input type="image" />
:reset<input type="reset" />
:button<input type="button" />
:file<input type="file" />
:hidden<input type="hidden" />