如果没有叶子节点附加在另一个div中,请单击li

时间:2013-04-24 07:46:04

标签: javascript

我有一个Activity xml文件,当我点击子显示的活动时,我试图从活动中获取。它看起来像是所有点击的结束。

  <ul id="firstLevelChild">
<ul id="ul">
    <li id="4">Activities
        <ul class="ul">
            <li id="10066">Physical1
                <ul class="ul">
                    <li id="10067">Cricket
                        <ul class="ul">
                            <li id="10068">One Day</li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </li>
</ul>
</ul>

现在我希望如果li没有叶子节点,那么它在另一个div中显示。类似的东西:

点击Acitivities有子节点Physical1,还有子Cricket,当{@ 1}}点击One Day时,有一天one day现在没有孩子它显示在我的<div id="result"></div>

3 个答案:

答案 0 :(得分:1)

我会将此添加为评论,但我没有足够的代表。 ChildNodes()不是函数 - 因为看起来您正在使用jQuery,请尝试使用children()

答案 1 :(得分:0)

我认为javascript可以帮助你。你首先建立你的DOM正确的部分;)

如果当前元素节点有子节点,则hasChildNodes()方法返回TRUE,否则返回FALSE。

http://www.w3schools.com/dom/met_element_haschildnodes.asp

答案 2 :(得分:0)

假设您提供的标记始终是ul作为所有li的子项。您只需检查当前ul内是否存在li。见fiddle

<强> HTML

<div id="content">
    <ul id="firstLevelChild">
       <li>
        <ul id="ul">
            <li id="4">Activities
                <ul class="ul">
                    <li id="10066">Physical1
                        <ul class="ul">
                            <li id="10067">Cricket
                                <ul class="ul">
                                    <li id="10068">One Day</li>
                                </ul>
                            </li>
                        </ul>
                    </li>
                </ul>
            </li>
           </ul>
        </li>
    </ul>
</div>

<h2>Result</h2>

<ul id="result"></ul>

<强> JS

$('#content li').each(function (i) {

    //for display purpose only
    $('#content').append('<span class="list">li(' + i + '):' + $('ul', $(this)).length + '</span>');

    //the code you needed
    if ($('ul', $(this)).length < 1) {
        $(this).on('click', function () {
          $('#result').append($(this).parent().html());
        });
    }
});