Кнопка JQuery не отвечает на метод нажатия - PullRequest
4 голосов
/ 15 ноября 2011

, поэтому я динамически отрисовываю абзац с помощью jquery, используя метод append, и я хочу добавить в него событие click, но по какой-то причине событие click не работает, я знаю, что решение, вероятно, простое, но я новичок в jquery и был бы признателен за любую помощь ... Я знаю, что код внутри функции работает, потому что я проверил его с помощью статической кнопки, она просто не работает с динамической кнопкой .. Заранее благодарен за любую помощь,

вот мой код

$(this).parent().parent().children("div").append("<p class='tryAgain'>Try Again</p>");

код функции щелчка,

$(".tryAgain").click(function() {......}

Ответы [ 5 ]

7 голосов
/ 15 ноября 2011

Все, что вы добавляете в DOM после запуска document.ready, должно использовать .live или .delegate , чтобы добавить обработчик событий для вновь добавленного элемента.

Например:

$('.tryAgain').live("click", function() {...});

Если вы используете jquery 1.7+, вы должны использовать .on :

$(document).on("click", ".tryAgain", function(){ ... });
1 голос
/ 15 ноября 2011

Использование:

$('.tryAgain').live('click', function()
{
  ....
});
1 голос
/ 15 ноября 2011

Попробуйте с $. Live o $. Делегат .

0 голосов
/ 15 ноября 2011

Я думаю, что вы можете прикрепить событие click прямо там, когда создаете новый тег p следующим образом:

$(this).parent().parent().children("div").append(
    $('<p>').addClass('tryAgain').click(function(){
        alert('test');
    }));
0 голосов
/ 15 ноября 2011

Существует альтернатива использованию живых событий, вы можете добавить обработчик при создании элемента следующим образом:

$("<p>Try Again</p>", {
  "class": "tryAgain",
  click: function(){
     //YOUR CLICK HANDLER
  }
}).appendTo($(this).parent().parent().children("div"));
...