jQuery遍历DOM节点操作之filter()方法详解
作者:bea
本文实例分析了jQuery遍历DOM节点操作之filter()方法。分享给大家供大家参考,具体如下: .filter(selector) 此方法用于在匹配元素中按照选择器表达式进行筛选。 记住:使用此方法必须得传入选择器表达式参数,不然会报错“'nodeType' 为空或不是对象” 另外请注意这个filter方法和jquery中的find方法的区别: filter方法是对匹配元素进行筛选,而find方法是对匹配元素的后代元素进行筛选。 从jquery1.4版本开始,filte
本文实例分析了jQuery遍历DOM节点操作之filter()方法。分享给大家供大家参考,具体如下:
.filter(selector)
此方法用于在匹配元素中按照选择器表达式进行筛选。 记住:使用此方法必须得传入选择器表达式参数,不然会报错“'nodeType' 为空或不是对象”
另外请注意这个filter方法和jquery中的find方法的区别: filter方法是对匹配元素进行筛选,而find方法是对匹配元素的后代元素进行筛选。
从jquery1.4版本开始,filter方法又添加了两个新的用法,现在一共有四种用法了。
下面来具体看看这四种用法:
一、 .filter(selector)
这种用法是在已匹配的元素中按照给定的selector参数(jquery选择器表达式)进行筛选,然后将匹配的元素包装成jquery元素集合返回。这个方法是用来缩小匹配范围的,selector参数可以是多个表达式用逗号连接起来。
来看例子:
HTML代码:
<ul>
<li>11111</li>
<li class="item">22222</li>
<li>33333</li>
<li>44444</li>
<li>55555</li>
<li>66666</li>
<li>77777</li>
</ul>
Jquery代码:
$("ul>li").filter(":even").css("color","red");
//将索引为偶数的li背景变为红色
上面的jquery代码和下面的jquery代码效果是一样的
$("ul>li:even").css("color","red");
//将索引为偶数的li背景变为红色
再来看一下选择器表达式用逗号连接起来的用法:
$("ul>li").filter(":even,.item").css("color","blue");
//将索引为偶数和calss为item的li背景变为蓝色
demo示例如下:
<ul>
<li>11111</li>
<li class="item">22222</li>
<li>33333</li>
<li>44444</li>
<li>55555</li>
<li>66666</li>
<li>77777</li>
</ul>
<input type="button" id="test1" value="获取索引为偶数的li">
<input type="button" id="test2" value="获取索引为偶数和calss为item的li">
<script>
$(function(){
$("#test1").click(function(){
$("ul>li").filter(":even").css("color","red");//将索引为偶数的li背景变为红色
//这个式子和 $("ul>li:even").css("color","red"); 等效
});
$("#test2").click(function(){
$("ul>li").filter(":even,.item").css("color","blue");//将索引为偶数和calss为item的li背景变为蓝色
});
});
</script>
二、 .filter( function(index) )
这种使用方法是对匹配的元素进行遍历,如果function(index)返回的值为true的话,那么这个元素就被选中,如果返回值为false的话,那么这个元素就不被选中
index参数是当前的匹配元素在原来的元素集合中的索引。
如果您对上面的解释不清楚的话(本人表达能力有点欠缺~^_^),可以好好看看下面的例子:
HTML代码:
<div id="first"></div>
<div id="second"></div>
<div id="third"></div>
<div id="fourth"></div>
<div id="fifth"></div>
<div id="sixth"></div>
jquery代码:
$("div").filter(function(index) {
return index == 1 || $(this).attr("id") == "fourth";
}).css("border", "5px double blue");
上面代码的结果是 第二个div元素和 id为“fourth”的div元素的边框变成了双线颜色为蓝色
demo示例如下:
<style>
div{ width:60px; height:60px; margin:5px; float:left;border:3px white solid;background:#ff0000 }
</style>
<div id="first"></div>
<div id="second"></div>
<div id="third"></div>
<div id="fourth"></div>
<div id="fifth"></div>
<div id="sixth"></div>
<br><br><br><br><br><br>
<input type="button" id="test" value="点击我看看上面的div的变化">
<script>
$("#test").click(function(){
$("div").filter(function(index) {
return index == 1 || $(this).attr("id") == "fourth";
}).css("border", "5px double blue");
});
</script>
三、 .filter( element )
element参数为DOM对象,如果element DOM对象和匹配的元素是同一个元素的话,那么这个元素会被匹配。这种用法是1.4版本新加的,我还没想出来有什么用处
看例子吧:
还是对上面的HTML代码,看jquery代码:
代码如下:
$("div").filter(document.getElementById("third")).css("border", "5px double blue");
结果是id为third的div元素边框有变化。
这个例子举得很鸡肋,大家会说何必这么麻烦呢?还不如直接:
$("#third").css("border", "5px double blue");
的确,我也是这样想的,但是既然是1.4版本新加的,那肯定会是有用到的地方的,不会是鸡肋的,只是我的jquery水平还太低,还没发现而已,如果哪位看官有想到用处的话,还望赐教!
demo示例如下:
<style>
div{ width:60px; height:60px; margin:5px; float:left;border:3px white solid;background:#ff0000 }
</style>
<div id="first"></div>
<div id="second"></div>
<div id="third"></div>
<div id="fourth"></div>
<div id="fifth"></div>
<div id="sixth"></div>
<br><br><br><br><br><br>
<input type="button" id="test" value="点击我看看上面的div的变化">
<script>
$("#test").click(function(){
$("div").filter(document.getElementById("third")).css("border", "5px double blue");
});
</script>
四、 .filter(jQuery object)
这个用法和上面的.filter( element )的用法差不多,只是一个参数为DOM对象,一个参数为jquery对象,我还是感觉比较鸡肋。
看例子:
同样是对上面的HTML代码,看jquery代码:
$("div").filter($("#third")).css("border", "5px double blue");
结果是id为third的div元素边框有变化。 同样直接用下面的jquery代码会更好:
$("#third").css("border", "5px double blue");
demo示例如下:
<style>
div{ width:60px; height:60px; margin:5px; float:left;border:3px white solid;background:#ff0000 }
</style>
<div id="first"></div>
<div id="second"></div>
<div id="third"></div>
<div id="fourth"></div>
<div id="fifth"></div>
<div id="sixth"></div>
<br><br><br><br><br><br>
<input type="button" id="test" value="点击我看看上面的div的变化">
<script>
$("#test").click(function(){
$("div").filter($("#third")).css("border", "5px double blue");
});
</script>
更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jQuery遍历算法与技巧总结》、《jQuery表格(table)操作技巧汇总》、《jQuery拖拽特效与技巧总结》、《jQuery扩展技巧总结》、《jQuery常见经典特效汇总》、《jQuery动画与特效用法总结》、《jquery选择器用法总结》及《jQuery常用插件及用法总结》
希望本文所述对大家jQuery程序设计有所帮助。
有用 | 无用
.filter(selector)
此方法用于在匹配元素中按照选择器表达式进行筛选。 记住:使用此方法必须得传入选择器表达式参数,不然会报错“'nodeType' 为空或不是对象”
另外请注意这个filter方法和jquery中的find方法的区别: filter方法是对匹配元素进行筛选,而find方法是对匹配元素的后代元素进行筛选。
从jquery1.4版本开始,filter方法又添加了两个新的用法,现在一共有四种用法了。
下面来具体看看这四种用法:
一、 .filter(selector)
这种用法是在已匹配的元素中按照给定的selector参数(jquery选择器表达式)进行筛选,然后将匹配的元素包装成jquery元素集合返回。这个方法是用来缩小匹配范围的,selector参数可以是多个表达式用逗号连接起来。
来看例子:
HTML代码:
<ul>
<li>11111</li>
<li class="item">22222</li>
<li>33333</li>
<li>44444</li>
<li>55555</li>
<li>66666</li>
<li>77777</li>
</ul>
Jquery代码:
$("ul>li").filter(":even").css("color","red");
//将索引为偶数的li背景变为红色
上面的jquery代码和下面的jquery代码效果是一样的
$("ul>li:even").css("color","red");
//将索引为偶数的li背景变为红色
再来看一下选择器表达式用逗号连接起来的用法:
$("ul>li").filter(":even,.item").css("color","blue");
//将索引为偶数和calss为item的li背景变为蓝色
demo示例如下:
<ul>
<li>11111</li>
<li class="item">22222</li>
<li>33333</li>
<li>44444</li>
<li>55555</li>
<li>66666</li>
<li>77777</li>
</ul>
<input type="button" id="test1" value="获取索引为偶数的li">
<input type="button" id="test2" value="获取索引为偶数和calss为item的li">
<script>
$(function(){
$("#test1").click(function(){
$("ul>li").filter(":even").css("color","red");//将索引为偶数的li背景变为红色
//这个式子和 $("ul>li:even").css("color","red"); 等效
});
$("#test2").click(function(){
$("ul>li").filter(":even,.item").css("color","blue");//将索引为偶数和calss为item的li背景变为蓝色
});
});
</script>
二、 .filter( function(index) )
这种使用方法是对匹配的元素进行遍历,如果function(index)返回的值为true的话,那么这个元素就被选中,如果返回值为false的话,那么这个元素就不被选中
index参数是当前的匹配元素在原来的元素集合中的索引。
如果您对上面的解释不清楚的话(本人表达能力有点欠缺~^_^),可以好好看看下面的例子:
HTML代码:
<div id="first"></div>
<div id="second"></div>
<div id="third"></div>
<div id="fourth"></div>
<div id="fifth"></div>
<div id="sixth"></div>
jquery代码:
$("div").filter(function(index) {
return index == 1 || $(this).attr("id") == "fourth";
}).css("border", "5px double blue");
上面代码的结果是 第二个div元素和 id为“fourth”的div元素的边框变成了双线颜色为蓝色
demo示例如下:
<style>
div{ width:60px; height:60px; margin:5px; float:left;border:3px white solid;background:#ff0000 }
</style>
<div id="first"></div>
<div id="second"></div>
<div id="third"></div>
<div id="fourth"></div>
<div id="fifth"></div>
<div id="sixth"></div>
<br><br><br><br><br><br>
<input type="button" id="test" value="点击我看看上面的div的变化">
<script>
$("#test").click(function(){
$("div").filter(function(index) {
return index == 1 || $(this).attr("id") == "fourth";
}).css("border", "5px double blue");
});
</script>
三、 .filter( element )
element参数为DOM对象,如果element DOM对象和匹配的元素是同一个元素的话,那么这个元素会被匹配。这种用法是1.4版本新加的,我还没想出来有什么用处
看例子吧:
还是对上面的HTML代码,看jquery代码:
代码如下:
$("div").filter(document.getElementById("third")).css("border", "5px double blue");
结果是id为third的div元素边框有变化。
这个例子举得很鸡肋,大家会说何必这么麻烦呢?还不如直接:
$("#third").css("border", "5px double blue");
的确,我也是这样想的,但是既然是1.4版本新加的,那肯定会是有用到的地方的,不会是鸡肋的,只是我的jquery水平还太低,还没发现而已,如果哪位看官有想到用处的话,还望赐教!
demo示例如下:
<style>
div{ width:60px; height:60px; margin:5px; float:left;border:3px white solid;background:#ff0000 }
</style>
<div id="first"></div>
<div id="second"></div>
<div id="third"></div>
<div id="fourth"></div>
<div id="fifth"></div>
<div id="sixth"></div>
<br><br><br><br><br><br>
<input type="button" id="test" value="点击我看看上面的div的变化">
<script>
$("#test").click(function(){
$("div").filter(document.getElementById("third")).css("border", "5px double blue");
});
</script>
四、 .filter(jQuery object)
这个用法和上面的.filter( element )的用法差不多,只是一个参数为DOM对象,一个参数为jquery对象,我还是感觉比较鸡肋。
看例子:
同样是对上面的HTML代码,看jquery代码:
$("div").filter($("#third")).css("border", "5px double blue");
结果是id为third的div元素边框有变化。 同样直接用下面的jquery代码会更好:
$("#third").css("border", "5px double blue");
demo示例如下:
<style>
div{ width:60px; height:60px; margin:5px; float:left;border:3px white solid;background:#ff0000 }
</style>
<div id="first"></div>
<div id="second"></div>
<div id="third"></div>
<div id="fourth"></div>
<div id="fifth"></div>
<div id="sixth"></div>
<br><br><br><br><br><br>
<input type="button" id="test" value="点击我看看上面的div的变化">
<script>
$("#test").click(function(){
$("div").filter($("#third")).css("border", "5px double blue");
});
</script>
更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jQuery遍历算法与技巧总结》、《jQuery表格(table)操作技巧汇总》、《jQuery拖拽特效与技巧总结》、《jQuery扩展技巧总结》、《jQuery常见经典特效汇总》、《jQuery动画与特效用法总结》、《jquery选择器用法总结》及《jQuery常用插件及用法总结》
希望本文所述对大家jQuery程序设计有所帮助。
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- jQuery遍历json的方法分析
- jquery对dom节点的操作【推荐】
- Jquery attr()方法 属性赋值和属性获取详解
- 有关jquery与DOM节点操作方法和属性记录
- 快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
- 使用Object.defineProperty实现简单的js双向绑定
- jQuery实现下拉框左右移动(全部移动,已选移动)
- jQuery调用WebMethod(PageMethod) NET2.0的方法
- jQuery解决浏览器兼容性问题案例分析
- jQuery使用cookie与json简单实现购物车功能
- 在Html中使用Requirejs进行模块化开发实例详解
- jQuery基于json与cookie实现购物车的方法
- Window.Open打开窗体和if嵌套代码
- jQuery设置Cookie及删除Cookie实例分析
- jQuery获取cookie值及删除cookie用法实例
- jQuery通过写入cookie实现更换网页背景的方法
- jquery.cookie.js实现用户登录保存密码功能的方法
- jQuery遍历DOM元素与节点方法详解
- jQuery中的基本选择器用法学习教程