jQuery筛选
1.过滤
eq(index|-index) // 获取集合中第[index]个元素,[-index]倒数。返回JQ对象
first() // 获取集合中第一个元素。返回JQ对象
last() // 获取集合中最后一个元素。返回JQ对象
slice(start,[end]) // 依据位置下标,获取集合中的部分子集。返回JQ对象
map(callback) // 遍历集合中每个元素执行一次函数,返回新的集合
has(expr|ele) // 获取包含特定要求的元素(传参选择器或DOM对象)。返回JQ对象
hasClass(class) // 检查是否含有某个类,返回布尔值
is(expr|obj|ele|fn) // 检查集合中是否有符合要求的元素(传参选择器,JQ对象,DOM对象,函数),返回布尔值
filter(expr|obj|ele|fn) // 筛选出与指定表达式匹配的元素集合(传参选择器,JQ对象,DOM对象)。返回JQ对象
not(expr|ele|fn) // 删除与指定表达式匹配的元素(传参选择器,DOM对象,函数)
用法:
<html>
<p>A</p>
<p class="a">B</p>
<p>C<span></span></p>
</html>
<script>
$("p").eq(0).css("color", "red"); //"A"显示为红色
$("p").first().css("color", "green"); //"A"显示为绿色
$("p").last().css("color", "red"); //"C"显示为红色
$("p").slice(0,2).css("color", "blue"); //"A","B"显示为蓝色 ([0]至[2],不包含[2])
$("p").slice(0,-1).css("color", "pink"); //"A","B"显示为粉色 ([0]至倒数第一个,不包含倒数第一个)
$("p").has("span").css("color", "blue"); //"C"显示为蓝色 (含有span元素的p)
$("p").filter(".a").css("color", "blue"); //"B"显示为蓝色 (含有class="a"元素的p)
$("p").not(".a").css("color", "yellow"); //"A","C"显示为黄色 (不含class="a"元素的p)
$("p").filter(function(index) {
return $("span", this).length == 1; //"C"显示为红色 (含有一个span元素的p)
}).css("color","red");
$("p").not(function(){
return $("span", this).length == 1; //"A","B"显示为蓝色 (含span元素个数不为1的p)
}).css("color","blue");
$("p").map(function(i,d){ //i是每个元素对应下标,d是该元素DOM对象
return $(this).text(i+"|"+d.tagName)
}); //页面显示: 0|P 1|P 2|P
$("p").hasClass("a"); //返回 true (集合中有元素的class="a")
$("span").parent().is("p"); //返回true (span元素的父元素是p元素)
$("p").is(function(){ //返回true
return $("span").length==1; //集合中,包含span元素的个数是否等于1
});
</script>
2.查找
children([expr]) // 获取子元素中匹配的元素(传参选择器)。返回JQ对象
find(e|o|e) // 获取后代元素中匹配的元素(传参选择器,JQ对象,DOM对象)。返回JQ对象
offsetParent() // 获取最近的定位父元素。返回JQ对象
parent([expr]) // 获取父元素。返回JQ对象
parents([expr]) // 获取所有祖辈元素,不包括根元素。返回JQ对象
parentsUntil([e|e][,f]) // 获取部分祖辈元素,从这个倒那个之间的祖辈元素(由外向内)。返回JQ对象
next([expr]) // 获取同级下一个元素(传参选择器)。返回JQ对象。
nextAll([expr]) // 获取同级后所有元素(传参选择器)。返回JQ对象。
nextUntil([e|e][expr]) // 获取同级后面元素,直到遇到匹配的那个元素为止。
prev([expr]) // 获取同级上一个元素(传参选择器)。返回JQ对象。
prevAll([expr]) // 获取同级前所有元素(传参选择器)。返回JQ对象。
prevUntil([e|e][,f]) // 获取同级前面元素,直到遇到匹配的那个元素为止。
siblings([expr]) // 获取所有同级元素,不包含自己。
closest(e,[c|o|e) // 1.7-jQuery 1.3新增,1.7后删除。从元素本身开始,逐级向上级元素匹配,并返回最先匹配的元素。
用法:
<html>
<div id="a1">
<h1></h1>
<p>A</p>
<p>B<span>b</span></p>
<div id="a2">
<p>n</p>
<span class="b">m</span>
</div>
<p class="a">C</p>
</div>
</html>
<script>
$("div").children().css("color","green"); // 全部显示绿色
$("div").children("span,.a").css("color","red"); // "m","C"显示红色
$("div").find("span,.a").css("color","green"); // "b","m","C"显示绿色
$("span").parent().css("color","red"); // "B","b","n","m"显示为红色
$("span").parent("p").css("color","green"); // "B","b"显示为绿色
$("p").parents("div").length; // 返回 2
$(".a").parents("div").length; // 返回 1
$(".b").parentsUntil("#a1","#a2")[0].id; // 返回 a2
$("p").next().length; // 返回 3
$("p").next("div").length; // 返回 1
$("p").next("div")[0].id; // 返回 a2
$("h1").nextAll().length; // 返回 4
$("h1").nextAll()[0].tagName; // 返回 P
$("h1").nextAll()[2].tagName; // 返回 DIV
</script>
3.串联
add(e|e|h|o[,c]) // 1.9*连接2个对象集合成一个对象集合(传参选择器,JQ对象,DOM对象,html表达式,)
addBack(elel0) // 1.9+将先前所选的加入当前元素中
contents() // 查找匹配元素内部所有的子节点(包括文本节点)。如果元素是一个iframe,则查找文档内容
end() // 回到最近的一个"破坏性"操作之前。即,将匹配的元素列表变为前一次的状态。
andSelf() // 1.8-在jQuery1.8和更高版本中应使用.addBack()代替。
用法:
<html>
<div>
<p></p>
<p></p>
<div class="a">
<p></p>
<span></span>
</div>
</div>
</html>
<script>
$("span").add("p").length; //返回 4
$("span").add($("p")).length; //返回 4
$("span").add("p")[3].tagName; //返回 SPAN (按照html代码中顺序)
$("p").add("span")[3].tagName; //返回 SPAN
$("span").add("<em>123</em>")[1].tagName; //返回 EM 创建一个对象加入 $("span")集合中
$("div").find("span").addBack().length; //返回 3 (1个span再加上2个div)
$("div").find("span").addBack()[2].tagName; //返回 SPAN
$("div").find("span").addBack(".a").length; //返回 2 (1个span再加上class="a"的1个div)
$(".a").contents().not("p").wrap("<b/>"); //将 .a 子元素中非p元素节点包裹一层 b 标签
$("iframe").contents().find("body").append("123"); //在iframe中插入"aaa"
$("div").find("span").end(); //即回到 $("div")
$("div").length; //返回 2
$("div").find("span").length; //返回 1
$("div").find("span").end().length; //返回 2
</script>