从<ul> <li> </li>的孩子</>获取<li> </> </ul> </li>

时间:2011-11-11 12:41:00

标签: javascript jquery

我在这里有一个非常简单的菜单示例:

<ul id="1">
    <li><a href="#">First</a></li>
    <li><a href="#">Second</a>
    <ul id="2">
        <li><a href="#">Second - 1</a></li>
        <li><a href="#">Second - 2</a></li>
        <li><a href="#">Second - 3</a>
        <ul id="3">
            <li><a href="#">Aaa</a></li>
            <li><a href="#">Bbb</a></li>
            <li><a href="#">Ccc</a></li>
        </ul>
        </li>
    </ul>
    </li>
    <li><a href="#">Third</a></li>
</ul>

我需要让<li>有一个孩子<ul>并且<ul>的孩子是<li>的孩子,并为其申请一种风格

我知道这听起来很复杂,但在上面的例子中,我想只得到<li>说“第二 - 3”,这是一个ul里面的孩子,这是一个孩子的ul 。我不想获得任何其他<li>

如果没有得到“第二”的li,我就不能这样做,我不希望这样。

$("li > ul").addClass('whatever');

3 个答案:

答案 0 :(得分:6)

使用$("li ul li:has(ul)")

e.g:

$(function(){
    var items = $("li ul li:has(ul)");
    alert(items.html());
});

工作示例:http://jsfiddle.net/EXzaa/

答案 1 :(得分:1)

试试这个:

$("li > ul > li").each(function(){
    if ( $(this).find("ul").length > 0){
        $(this).css({"font-weight":"bold"});
    }
});

答案 2 :(得分:1)

除非我弄错了,否则这很简单。尝试这样的事情:

$('#3').parent('li').addClass('whatever');

这将选择id为ul元素的父节点(仅当它是li元素时)