jquery选择器操作二

紧接上一节,继续介绍jQuery基础选择器

6)属性过滤选择器


属性过滤选择器主要是各种拼接符号:!、*、^、$、|、~

<style type="text/css">
div{width:130px;height:100px;margin:5px;background:#aaa;border:#000 1px solid;float:left;font-size:17px;font-family:Verdana;}
span{color:#f00;font-size:1.2em;}
</style>

<div title="en">title为en的div元素</div>
<div title="en-UK">title为en-UK的div元素</div>
<div title="english">title为english的div元素</div>
<div title="en UK">title为en UK的div元素</div>
<div title="uken">title为uken的div元素</div>
<script type="text/javascript">
//$('div[title=en]').css({"color":"#f00","font-size":"1.2em"});
//$("span").text("以en开头");
//$('div[title^=en]').css({"color":"#f00","font-size":"1.2em"});
//$("span").text("含有en开头");
//$('div[title*=en]').css({"color":"#f00","font-size":"1.2em"});
//$("span").text("以en结束");
//$('div[title$=en]').css({"color":"#f00","font-size":"1.2em"});
//$("span").text("以en开头或者以en为前缀后面跟-");
//$('div[title|=en]').css({"color":"#f00","font-size":"1.2em"});
$("span").text("用空格分隔含有uk");
$('div[title~=UK]').css({"color":"#f00","font-size":"1.2em"});
</script>

7)子元素过滤选择器

子元素选取大家可能会想到前面说到的eq、first、last,但必然也会想到与上面的写法是有区别的,前者只返回单个元素,后者是一个集合

对于nth-child补充如下:

*nth-child(even)         选取的是每个父元素下面索引值为偶数的子元素

*nth-child(odd)          选取的是每个父元素下面索引值为奇数的子元素

*nth-child(3)               选取的是每个父元素下面索引值为3的子元素

*nth-child(3n)            选取的是每个父元素下面索引值为3的倍数的子元素(n从1开始)

*nth-child(3n+1)        选取的是每个父元素下面索引值为3n+1的子元素(n从0开始,某些jQuery版本可能是从1开始)

<style type="text/css">
div {position:relative;marign:10px;float:left;font-size:0.9em;}
.mini {width:85px;height:45px;background-color: #aaa;margin:10px;}
.one{width:140px;height:140px;background-color:#777;margin:10px;}
.two{width:140px;height:140px;background-color:#777;margin:10px;}
</style>

<div class="one">
	<div class="mini">first one class</div>
</div>
<div class="one">
	<div class="mini">first one class</div>
	<div class="mini">second one class</div>
</div>
<div class="two">
	<div class="mini">first two class</div>
	<div class="mini">second two class</div>
</div>
<div class="one">
	<div class="mini">first one class</div>
	<div class="mini">second one class</div>
</div>
<div class="two">
	<div class="mini">first two class</div>
	<div class="mini">second two class</div>
</div>

<script type="text/javascript">
	//改变class为one下下标为2的子元素样式
$(".one>.mini:nth-child(2)").css({"background-color":"#fad","color":"#fff","font-size":"1.2em"});
	//改变class为one下下标为奇数的子元素样式
$(".one>.mini:nth-child(odd)").css({"background-color":"#fad","color":"#fff","font-size":"1.2em"});
	//改变class为two下下标为偶数的子元素样式
$(".two>.mini:nth-child(even)").css({"background-color":"#fad","color":"#fff","font-size":"1.2em"});
	//改变class为one下下标为3n的子元素样式
$(".one>.mini:nth-child(3n)").css({"background-color":"#fad","color":"#fff","font-size":"1.2em"});
	//改变class为two下下标为3n+1的子元素样式
$(".two>.mini:nth-child(3n+1)").css({"background-color":"#fad","color":"#fff","font-size":"1.2em"});
	//改变class为one下第一个子元素样式
$(".one>.mini:first-child").css({"background-color":"#fad","color":"#fff","font-size":"1.2em"});
	//改变class为one下最后一个子元素样式
$(".one>.mini:last-child").css({"background-color":"#fad","color":"#fff","font-size":"1.2em"});
	//改变class为one下只有唯一子元素的样式
$(".one>.mini:only-child").css({"background-color":"#fad","color":"#fff","font-size":"1.2em"});
</script>

8)表单对象属性过滤选择器1


这里需要注意的是过滤属性必须是目标对象所具有的属性,比如checked肯定是单选框或者复选框、selected肯定是下拉框


9)表单对象属性过滤选择器2


这里需要注意的是一定要加“:”,区分$("#formid :input")和$("#formid input")的区别。

另外,以下情况可能也会遇到:

$1、使用选择器是含有特殊符号:!、@、#、$、[、~等,需使用转义符转换成jQuery能读取的字符

<div id="div]id$"></div>则应该用$("#div\\]id\\$"),而不是$("#div]id$")

$2、选择器中使用空格的情况:一种是后代选择器、一种是普通过滤选择器

<div class="test" style="display:none"></div>
<div class="test">
        <div class="test"></div>
        <div class="test" style="display:none"></div>
</div>
<div class="test" style="display:none"></div>
<div></div>

通过以下两种方式获取结果是不一样的:

$(function(){
	$("div:last").append('<p>no space:'+$(".test:hidden").length+'</p>');
	$("div:last").append('<p>with space:'+$(".test :hidden").length+'</p>');
})
结果:
no space:3

with space:1

显然,第一种不带空格的是选择了display为none的所有test样式的节点集合,第二种带空格的是选择了样式为test并且它的子元素中style属性的样式属性display为none的节点集合.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值