日期:2014-05-16  浏览次数:20442 次

求jquery如何根据某个属性的长度过滤数据??

<div tree="T">123</div>
<div tree="T01">123</div>
<div tree="T02">123</div>
<div tree="T0101">123</div>
<div tree="T0201">123</div>

如果我使用$("div[tree*=T]")过滤,则以上所有div都会被过滤出来。
但是我只想过滤以T开头,tree属性长度为3位的div,也就是第2,3两个div!
或者我只想过滤以T01开头,tree属性长度为5位的div,也就是第4个div!
请问如何实现???

------解决方案--------------------

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
//以什么开头和tree的长度分别判断一次就可以了
//下面的是找出以T01开头的DIV tree的长度
$(function(){
$("div[tree^=T01]").each(function(){
alert($(this).attr('tree').length);
});
})
</script>
<div tree="T">123</div>
<div tree="T01">123</div>
<div tree="T02">123</div>
<div tree="T0101">123</div>
<div tree="T0201">123</div>

------解决方案--------------------
jquery选择器好像没提供这种功能,就算提供jquery也是获取指定的内容后对比进行过滤的,使用的还是底层的document.getElementById,document.getElementsByTagName等底层的DOM对象方法而已
------解决方案--------------------
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
//过滤以T01开头,tree属性长度为5位的div,
$("div").filter(function(){
return /^T01..$/.test($(this).attr("tree"));
}).css("background-color","#ff0000");
})
</script>
<div tree="T">123</div>
<div tree="T01">123</div>
<div tree="T02">123</div>
<div tree="T0101">123</div>
<div tree="T0201">123</div>