jQuery附加链接live()处理程序不触发

时间:2011-03-26 12:22:30

标签: jquery events

我有一个无序的链接列表,我在$(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()处理程序似乎没有附加到链接,但函数中的最后一行(将链接附加到

  • 元素然后到元素才能正常工作。此外,我没有得到javascript语法错误。

  • 1 个答案:

    答案 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
    });