Обработчик добавленной ссылки jQuery live () не запускается - PullRequest
0 голосов
/ 26 марта 2011

У меня есть неупорядоченный список ссылок, которые я динамически добавляю в $ (document) .ready (). Я определяю обработчик для живого события click в добавляемой ссылке, но она не срабатывает. У меня сложилось впечатление, что использование 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 Ответ

1 голос
/ 26 марта 2011

Нет, в вашем коде вы должны использовать 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
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...