0

我不敢相信我在问这个,但找不到明确的答案。我的 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 */
}
4

1 回答 1

1

您需要使用delegate(在 jQuery 1.7+ 中已弃用)为在偶数处理程序绑定on添加到 dom 的元素设置单击处理程序功能。您发布的添加元素的代码很好。需要更改的代码是绑定单击处理程序的任何位置。

代替

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

你需要使用

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

或者,在 jQuery 1.7+ 中,

$('ul').on('click', 'li', function () { ... });
于 2012-04-23T18:21:30.597 回答