jquery属性过滤选择器

jquery属性过滤选择器

属性过滤选择器可分为简单属性选择器、具体属性选择器和条件属性选择器三种。

1.简单属性选择器

[attribute]
选择器选择拥有该属性的元素,返回集合元素

//选择拥有title属性的所有元素
$('[title]')
//选择拥有title属性的所有span元素
$('span[title]')
//选择同时拥有title属性和id属性的所有span元素
$('span[id][title]')
<button id="btn1" style="color: red;">$('[title]')</button>
<button id="btn2" style="color: blue;">$('span[title]')</button>
<button id="btn3" style="color: green;">$('span[id][title]')</button>
<button id="reset">还原</button>
<div>
    <span title="span0">span0</span>
    <span>span1</span>
    <span title="span2">span2</span>
    <i title="i0">i0</i>
    <span id="span3" title="span3">span3</span>
    <i>i1</i>
</div>
<script>
reset.onclick = function(){history.go();}
//选择拥有title属性的所有元素,结果是span0、span2、i0、span3
btn1.onclick = function(){$('[title]').css('color','red');}

//选择拥有title属性的所有span元素,结果是span0、span2、span3
btn2.onclick = function(){$('span[title]').css('color','blue');}

//选择同时拥有title属性和id属性的所有span元素,结果是span3
btn3.onclick = function(){$('span[id][title]').css('color','green');}
</script>

如果使用javascript实现类似$(‘span[id][title]’).css(‘color’,’green’)的效果

var spans = document.getElementsByTagName('span');
for(var i = 0; i < spans.length; i++){
    if((spans[i].id != '') && (spans[i].title != '')){
        spans[i].style.color = 'green';
    }
}
2.具体属性选择器

[attribute=value]

[attribute=value]选择器选择属性值为value的元素,返回集合元素

//选择class值为test的元素
$('[class="test"]')
//选择class值为test的span元素
$('span[class="test"]')
//选择class值为test span的span元素
$('span[class="test span"]')
//选择class值为span test的span元素
$('span[class="span test"]')

严格匹配

 [注意]具体属性选择器的匹配属于严格匹配
 
【1】$(‘[class=”test”]’)匹配class属性只有test值的情况;而class=”test test1”将不会被匹配
【2】[class=”a1 a2”]和[class=”a2 a1”]并不相同,它们分别只严格匹配class=”a1 a2”和class=”a2 a1”的元素

<button id="btn1" style="color: red;">$('[class="test"]')</button>
<button id="btn2" style="color: blue;">$('span[class="test"]')</button>
<button id="btn3" style="color: green;">$('span[class="test span"]')</button>
<button id="btn4" style="color: pink;" >$('span[class="span test"]')</button>
<button id="reset">还原</button>
<div>
    <span class="test">span0</span>
    <span>span1</span>
    <span class="span test">span2</span>
    <i class="test">i0</i>
    <span class="test span">span3</span>
    <i>i1</i>
</div>
<script>
reset.onclick = function(){history.go();}
//选择class属性只是'test'的所有元素,结果是span0、i0
btn1.onclick = function(){$('[class="test"]').css('color','red');}

//选择class属性只是'test'的所有span元素,结果是span0
btn2.onclick = function(){$('span[class="test"]').css('color','blue');}

//选择class属性是'test span'的所有span元素,结果是span3
btn3.onclick = function(){$('span[class="test span"]').css('color','green');}

//选择class属性是'span test'的所有span元素,结果是span2
btn4.onclick = function(){$('span[class="span test"]').css('color','pink');}
</script>

如果使用javascript实现类似$(‘span[class=”span test”]’).css(‘color’,’pink’)的功能

var spans = document.getElementsByTagName('span');
for(var i = 0; i < spans.length; i++){
    if(spans[i].className == 'span test'){
        spans[i].style.color = 'pink';
    }
}

id选择器

  在CSS选择器,id选择器和id属性选择器并不相同,因为它们的优先级不同。而jQuery选择器,并没有优先级的概念,如果两个选择器对相同id属性同时设置,则后面覆盖前面

<button id="btn1">$('#test')在后</button>
<button id="btn2">$('[id="test"]')在后</button>
<button id="reset">还原</button>
<div id="test" style="height:20px;">测试内容</div>
<script>
reset.onclick = function(){history.go();}
btn1.onclick = function(){
    $('[id="test"]').css('color','blue');        
    $('#test').css('color','red');
}
btn2.onclick = function(){
    $('#test').css('color','red');
    $('[id="test"]').css('color','blue');    
}
</script>
3.条件属性选择器

条件属性选择器共包括6种,其中[attribute!=value]选择器是jQuery自己拓展的选择器

1)[attribute!=value]选择器选择属性值不等于value的元素,返回集合元素

[注意]class=”test test1”的元素也符合$(‘[class!=”test”]’)的情况,因为属性选择器的严格匹配机制
2)[attribute^=value]选择器选择属性值以value开始的元素,返回集合元素
3)[attribute$=value]选择器选择属性值以value结束的元素,返回集合元素
4)[attribute*=value]选择器选择属性值包含value的元素,返回集合元素
5)[attribute|=value]选择器选择属性值等于value或以value-开头的元素,返回集合元素
6)[attribute~=value]选择器选择属性值用空格分隔的值中包含value的元素,返回集合元素

[注意]$(‘[class~=”test”]’)选择器包含class=”test”的元素的情况

<button id="btn1" style="color: red;">!=</button>
<button id="btn2" style="color: blue;">^=</button>
<button id="btn3" style="color: green;">$=</button>
<button id="btn4" style="color: pink;" >*=</button>
<button id="btn5" style="color: gray;" >|=</button>
<button id="btn6" style="color: orange;" >~=</button>
<button id="reset">还原</button>
<div>
    <span>1</span>
    <span class="test">2</span>
    <span class="test1">3</span>
    <span class="is-test">4</span>
    <span class="test test1">5</span>
    <span class="test-1">6</span>
</div>
<script>
reset.onclick = function(){history.go();}

//选择class属性不是'test'的所有元素,结果是1、3、4、5、6
btn1.onclick = function(){$('div [class!="test"]').css('color','red');}

//选择class属性以'test'开始的所有元素,结果是2、3、5、6
btn2.onclick = function(){$('div [class^="test"]').css('color','blue');}

//选择class属性以'test'结束的所有元素,结果是2、4
btn3.onclick = function(){$('div [class$="test"]').css('color','green');}

//选择class属性包含'test'的所有元素,结果是2、3、4、5、6
btn4.onclick = function(){$('div [class*="test"]').css('color','pink');}

//选择class属性等于'test'或以'test-'开头的所有元素,结果是2、6
btn5.onclick = function(){$('div [class|="test"]').css('color','gray');}

//选择class属性在用空格分隔的值包含'test'的所有元素,结果是2、5
btn6.onclick = function(){$('div [class~="test"]').css('color','orange');}
</script>

如果使用javascript实现类似$(‘span[class~=”test”]’).css(‘color’,’orange’)的功能

var spans = document.getElementsByTagName('span');
for(var i = 0; i < spans.length; i++){
    if(/^test\s|\stest\s|\stest$|^test$/.test(spans[i].className)){
        spans[i].style.color = 'orange';
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值