我有一个无序的链接列表,我在$(document).ready()上动态添加。我正在为我添加的链接上的实时“点击”事件定义一个处理程序,但它没有触发。我的印象是使用live()结束,比如click()意味着事件处理程序附加到动态添加到DOM的元素。这是一个代码清单,可以帮助说明我的查询。
$(document).ready(function() {
$('.activities ul').each(function() {
appendAddTagLink($(this));
});
});
function appendAddTagLink(ulel) {
var thelink = $('<a>add</a>').attr('href', 'add');
thelink.live('click', function(ev) {
// Not getting here!
});
ulel.append($('<li></li>').append(thelink));
}
我正在将代码体提取到函数中,因为我需要重复使用它几次。奇怪的是,虽然live()处理程序似乎没有附加到链接,但函数中的最后一行(将链接附加到
答案 0 :(得分:1)
不,在您的代码中,您应该使用bind()
而不是live()
。
如果您想使用live()
,您的代码应如下所示:
$('.activities ul').each(function() {
$(this).append('<li><a href="add">add</a></li>');
});
// Some selector to grab your 'add' links
$("a[href=add]").live("click", function(){
// Do stuff
});