浅谈今天所学的Jquery 中的filter()方法
一直以来对JQuery很喜欢,它封装了JavaScript,用起来更方便,不过无论什么方法,必须要理解这个方法本来的含义,此外就是要在自己的逻辑上整理清楚,这样才能做到更多的效果。“遇到问题了,多看手册”这句话是当初学脚本语言的时候老师经常说的一句话,当初很郁闷他这句话,不过现在发现,封住的方法的确多得很,只有不断地学习,不断地用到,才会发现这些方法的区别,也才能更加合理地利用这些前辈们为我们打造好的各种包。
先来说说今天认识到的filter()方法吧。
这个方法主要用来遍历列表中的元素,或者有着并列关系的元素,filter()方法其实是个过滤选择器,旨在从众多的并列的“兄弟姐妹”中查找到符合匹配条件的那一来。
我们先来看看API中给我们提供的例子:
==============例1=============
(备注:这里就不写那么多引入的js和css,大家可以自己随意添加)
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
<li>list item 4</li>
<li>list item 5</li>
<li>list item 6</li>
</ul>
$(document).ready(function(){ ------>此处保持好习惯,最好等页面加载完了再运行这段代码
$( "li" ).filter( ":even" ).css( "background-color", "red" ); -------->意思是找到元素li中的偶元素(:even),并且设置这些偶元素的样式为"background-color", "red"
});
结果展示应该是“list item 1” “list item 3” “list item 5” 为背景红色
(备注,在这里元素的指数是从0开始的)
====================例2========================
<ul>
<li><strong>list</strong> item 1 - one strong tag</li>
<li><strong>list</strong> item <strong>2</strong> -
two <span>strong tags</span></li>
<li>list item 3</li>
<li>list item 4</li>
<li>list item 5</li>
<li>list item 6</li>
</ul>
$(document).ready(function(){
$( "li" )
.filter(function( index ) {
return $( "strong", this ).length === 1;
})
.css( "background-color", "red" );
});
这段代码似乎变得有点复杂了,但是道理其实是一样的,首先从$的地方开始找,先是找到li,在所有的li元素中找到含有strong元素,并且判断这个li 中的strong的个数,找到含有一个strong的那个,并且更改它的背景颜色。结果是只有第一个<li><strong>list</strong> item 1 - one strong tag</li> 变成了红色。
$(document).ready(function(){
$( "li" )
.filter(function( index ) {
return index % 3 === 2;})
.css( "background-color", "red" );
});
同样是上边的html,下面这段js的含义是说找到li,并且判断它的指数,是否是除3余2的那个,找到后改变它的背景色。
结果为<li>list item 3</li>和<li>list item 6</li>都改变了背景颜色,因为它们的指数一个为2,另一个为5,取余后都是2
====================例3========================
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>filter demo</title>
<style>
div {
width: 60px;
height: 60px;
margin: 5px;
float: left;
border: 2px white solid;
}
</style>
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<div></div>
<div class="middle"></div>
<div class="middle"></div>
<div class="middle"></div>
<div class="middle"></div>
<div></div>
<script>
$(document).ready(function(){
$( "div" )
.css( "background", "#c8ebcc" )
.filter( ".middle" )
.css( "border-color", "red" );
});
</script>
</body>
</html>
结果为所有的div都添加了背景色#c8ebcc,而所有的.middle的那div都加了红边框
=====================结语=======================
学习JQuery的道路还很长远,需要每天积累,希望正在学习这个语言的朋友们,相互交流,共同进步。