如何将所有单一后代结构的ul加上.red?
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
function select_uls(){
$.each($("ul"),function(i,n){
//将符合以下条件的所有ul全部加上红色.red;
//1.首先ul子代所有的tagName必须相等(如全部都是li)
//2.还需要ul子代所有的className必须相等(如全部都是test)
//3,(可免)如果很高手的话,附加检测ul的所有子元素是否含有相同的结构,如<li><a>hello</a></li>与<li>hello</li>
});
}
</script>
<style type="text/css">
.red{color:red;}
</style>
<div class="box">
<ul>
<li>hello</li>
<li>world</li>
<li>hi</li>
</ul>
<ul>
<li>hello</li>
<li>world</li>
<div>div</div>
</ul>
<ul>
<li class="test">hello</li>
<li>world</li>
<li>hi</li>
<li class="baba">hi</li>
</ul>
<ul>
<li class="test">hello</li>
<li class="test">hello</li>
<li class="test">world</li>
<li class="test">lady</li>
</ul>
<!-- 还有很多ul -->
......
</div>
<button onclick="select_uls()">color same structure ULs</button>

解决方案 »

  1.   

    $("ul").filter(function(){
         return $(this).children().length==1;
    }).addClass("red");
      

  2.   

    只含1个子节点的ul加red,我不是这个意思呀
      

  3.   

    前面没看清楚,不清楚这个可不可以,我没有测试。
    $("ul").filter(function(){
        var obj=$(this).children()
      return obj.length==$(this).find($(this).children().get(0).tagName).filter(return obj.get(0).className=$(this).get(0).className).length;
    }).addClass("red");
      

  4.   

    $("ul").filter(function(){
      var obj=$(this).children();
      return obj.length==$(this).find($(this).children().get(0).tagName).filter(return obj.get(0).className=$(this).get(0).className;).length;
    }).addClass("red");少了几个";"
      

  5.   

    find($(this).children().get(0).tagName)
    改成children
      

  6.   

    <script type="text/javascript">
    function select_uls(){
    $("ul").filter(function(){
    var obj=$(this).children();
    return obj.length==$(this).children($(this).children().get(0).tagName).filter(
    function(){
    return obj.get(0).className==$(this).get(0).className; //这个this是指谁?有点不理解
    }
    ).length
    }).addClass("red");
    }
    </script>能用,谢谢高手,就是有点糊涂this的指向
      

  7.   

    试了一下,很麻烦,在IE下,li解析之后,都变得没有关闭标签了,如原本代码是
        <ul>
            <li>hello</li>
            <li>world</li>
            <div>div</div>
        </ul>
    到了页面上变成了
         <ul>
            <li>hello
            <li>world
            <div>div</div></li>
        </ul>
    注意看这里,UL内部嵌套的div被自动加在了li中,并且每个UL中的LI,只有在最后的时候关闭了标签,这样导致在用jq解析的时候,无法判断出,内部的平级元素是否都是LI,但是在FIREFOX下没有这个问题。源码是什么,解析出来还是什么!
    所以你的第一个条件就无法满足了!