当然有一种简单的方法可以将附加的列表项“绑定”到现有的UL中吗?

时间:2012-04-23 18:19:39

标签: jquery append html-lists bind

我不敢相信我问这个,但找不到明确的答案。我的UL从它开始有两个项目,并通过AJAX调用进一步填充。我只是希望将返回的项目附加到该UL,并让它们像已经存在的两个一样“可点击”。

我已经看过十几个不同的复杂,复杂的答案,涉及BIND,LIVE,DELEGATE,MAP--所有这些都讨论了为什么不应该使用其他人。虽然这些讨论都有价值(我敢肯定),但他们似乎都没有给出一个明确的答案,因为(看似)这个简单。当然,有一种直接的方法可以附加LI,并让它使用已为列表定义的.click()事件。

$.each(api, function(i,item) {
    var listItem = "<li meeting_id='" + item.meeting_id + "'>" + item.meeting_name + "</li>";
    $("#MeetingList").append(listItem);
    /*Do Something here to bind the newly appended LI to the existing click event */
}

1 个答案:

答案 0 :(得分:1)

你需要使用delegate(在jQuery 1.7+中不赞成使用on)来使用偶数处理程序后添加到dom 的元素的点击处理程序功能界。您发布的用于添加元素的代码很好。需要更改的代码是绑定点击处理程序的任何地方。

而不是

$('ul li').click(function () { ... });

您需要使用

$('ul').delegate('li', 'click', function () { ... });

或者,在jQuery 1.7 +中,

$('ul').on('click', 'li', function () { ... });