<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!
请问如何实现???

解决方案 »

  1.   


    <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>
      

  2.   

    上面我只是简单的举了一个例子
    其实div有很多的
    如果都查出来再在function里面过滤的话会影响性能
    我想的是如何通过jquery一遍就查出需要的数据
      

  3.   

    DIV有很多你也得一个一个找啊
      

  4.   

    jquery选择器好像没提供这种功能,就算提供jquery也是获取指定的内容后对比进行过滤的,使用的还是底层的document.getElementById,document.getElementsByTagName等底层的DOM对象方法而已
      

  5.   

    <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>
      

  6.   


    filter 之前再精确一下范围就更好。