jQuery - live() 无法与 append div 中的 next() 一起使用

标签 jquery append jquery-selectors

此元素的目的是拥有一个完全基于简单无序列表的可折叠导航系统。默认情况下,所有嵌套列表都将被隐藏,并且 .toggle div(按钮) append 到包含嵌套列表的 li 项目。然后,这些 .toggle div 应该隐藏/显示嵌套列表,并将一个类应用于切换按钮。

我通过手动插入 .toggle div(用 [toggle div] 标注的位置)测试了此代码,一切正常。但是,当通过append()添加它时,似乎没有任何作用。有谁知道可能是什么原因导致这个问题?任何帮助将不胜感激 - 谢谢!

HTML:

<div id="nav">
<ul>
<li><a href="#">nav item</a>[toggle div]
    <ul>
        <li><a href="#">nav item</a></li>
        <li><a href="#">nav item</a></li>
        <li><a href="#">nav item</a>[toggle div]
            <ul>
                <li><a href="#">nav item</a></li>
                <li><a href="#">nav item</a></li>
                <li><a href="#">nav item</a></li>
            </ul>
        </li>
        <li><a href="#">nav item</a></li>
    </ul>
</li>
<li><a href="#">nav item</a></li>
<li><a href="#">nav item</a></li>
<li><a href="#">nav item</a></li>
</ul>
</div>

jQuery:

$(function(){
$("#nav ul li").has("ul").append("<div class='toggle'></div>");
$(".toggle").live("click", function() {
    if($(this).next().is(":hidden")) {
        $(this).next().show();
        $(this).addClass("toggled");
    } else {
        $(this).next().hide();
        $(this).removeClass("toggled");
    }
});
});

最佳答案

试试这个:

$("#nav li > ul").before('<div class="toggle"></div>');

如果将选择全部<ul>直接嵌套在 <li> 中的元素元素,并添加 <div>在他们每个人的面前。

看看演示:http://jsfiddle.net/xXRSZ/1/

关于jQuery - live() 无法与 append div 中的 next() 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6142386/

相关文章:

jQuery-File-Upload插件,如何确认多次删除?

javascript - 关于回调函数的 jQuery 术语

python - 使用 python pandas 将现有的 excel 表 append 到新的数据框

jquery - 对 .click() 使用超过 1 个项目

jquery - CSS 选择器对属性不区分大小写

javascript - 当不相关的 div 为空时更改文本

javascript - 使用 javascript 或 jquery 展开/折叠父元素?

javascript - event.target 在手机上的工作方式是否不同?

Python - 从字符串中删除所有标点符号,并仅打印包含 "i"且等于或长于五个字符的单词

jquery - 无法使用 .append() 选项来选择元素