我在创建List(Ul li)时遇到困难,事实上这是一个在运行时学习的菜单。
像
.Computers items
.Keyboard
.Cd rom
.office Equipment
.item 1
.item 2
.item 3
.item 4
.item 5
问题是,当我试图在运行时添加新的
我正在使用此代码
$("#cssmenu ul").append('<li class="active has-sub" id="'+ id.toString()+'" onclick="My_Func($(this).html(),this.id)"><a href="#"><span>'+txt +'</span></a>');
答案 0 :(得分:1)
您应首先在li
中包装第一级a
的内容(即您想要点击并加载数据的内容)。这样可以避免多级li
定位的挫败感。同时为您的id
提供唯一的li
,以便加载相应的数据。
然后,绑定到a
上的点击事件并创建ul
。将数据加载到li
并将其附加到此ul
。完成后,将此ul
附加到当前点击的li
。
此代码段会告诉您:
出于本演示的目的,我们从对象字典中加载数据,该字典包含每个类别的内容作为数组。
/* For the purpose of this demo, data is stored in this object */
var items = {
"computers": ['Computer 1', 'Computer 2', 'Computer 3'],
"equipment": ['Eq 1', 'Eq 2'],
"peripherals": ['CD', 'Printer', 'etc']
};
/* Target the a which are direct children of li which are direct children of list ul */
$("ul#list > li > a").on("click", function(e) {
// When a is clicked, we get the id of parent li
var id = $(this).parent().attr("id");
// Create a ul
var $wrap = $("<ul />");
// Loop thru data, or loaded thru other means
for (var idx in items[id]) {
// Create li from data and append to ul
$wrap.append("<li>" + items[id][idx] + "</li>");
}
// append this ul to the current li
$(this).parent().append($wrap);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="list">
<li id="computers"><a href="#">Computers</a></li>
<li id="equipment"><a href="#">Equipment</a></li>
<li id="peripherals"><a href="#">Peripherals</a></li>
<li>Others</li>
</ul>
&#13;