Как добавить действие к элементу, который динамически создается в jquery? - PullRequest
0 голосов
/ 17 августа 2011

У меня есть кнопка, когда вы нажимаете эту кнопку, она динамически создает вторую кнопку. Мне нужно поместить событие нажатия на динамически создаваемую кнопку (вторую кнопку), что я и делаю, но моя функция нажатия не работает.

Как мне заставить мою функцию щелчка работать с динамически создаваемыми элементами?

Ответы [ 7 ]

3 голосов
/ 15 июня 2014

Я знаю, что этот вопрос задавали давно ...
Начиная с jQuery v1.7, правильный способ сделать это:

$(document).on( "click",'.myNewlyCreatedElement', function () {
    // Your action
});

Ссылка: http://api.jquery.com/on/

2 голосов
/ 17 августа 2011

Вам либо нужно привязать событие click ко второй кнопке после ее создания. Или используйте функции jQuery Live или Delegate.

http://api.jquery.com/delegate/

Присоединить обработчик к одному или нескольким событиям для всех элементов, которые соответствуют селектор, сейчас или в будущем , на основе определенного набора root элементы.

Отправьте код, если вам нужна дополнительная помощь.

1 голос
/ 17 августа 2011

Вот пример .

Разметка:

<button id="create">Create</button>

<div id="container">
</div>

Сценарий:

var count = 0;
$("#create").click(function(e) {
    var num = count += 1;
    var newButton = $("<button>New " + num + "</button>").click(function() {
        alert("Button " + num + " was clicked.");
    });
    $("#container").append(newButton);
});
1 голос
/ 17 августа 2011

Вы должны использовать функцию jQuery .live(), которую можно найти здесь .

Пример:

$('button').live('click', function(){
    ...
});
0 голосов
/ 17 августа 2011
<input id="but1" type="button" value="click"></input>
<script>
$(document).ready(function(){
    $('#but1').click(function(){
    var button = $(document.createElement('input'));
        button.attr('id', 'but2');
        button.val('but2');
        button.attr('type', 'button');
        button.click(function(){alert('hello');});

        $(document.body).append(button);

    });

});
</script>
0 голосов
/ 17 августа 2011

вам нужно прикрепить событие, используя живой метод jqueries. Это свяжет событие со всеми экземплярами текущих и будущих элементов.

$('.classname').live('click', function() {
  alert("triggered");
});

таким образом событие click добавляется ко всем элементам с именем класса classname - даже если вы добавляете больше элементов с тем же классом.

0 голосов
/ 17 августа 2011

проверить jQuery .live ()

jQeru .live ()

...