Jquery не работает на динамически добавленной кнопке?

0
$(document).ready(function(){
    var t = $("<div><button class='leaf' id='l2'>Awesome!</button></div>");
   $('#l1').click(function(){
       $('#num').text("four");
       }); 
    $('.oright').click(function(){
       $('#num').text("Five");
       $('.oright').after(t);
       $('.oright').remove();
    });
    $('#l2').on('click', function(){
       $('#num').text("Reset?");
    });
});

Кнопка # l2 не имеет никаких функций. Я не вижу никакой ошибки синтаксиса, я искал ее и читал, что.on('click') был лучше, чем.click для динамических элементов, поэтому я изменил это, но он все еще не работает.

Теги:

2 ответа

0
Лучший ответ

Поскольку вы определили новую разметку кнопок как объект jquery - t - вы можете назначить обработчик кликов.

$(document).ready(function(){
    var t = $("<div><button class='leaf' id='l2'>Awesome!</button></div>");
   $('#l1').click(function(){
       $('#num').text("four");
       }); 
    $('.oright').click(function(){
       $('#num').text("Five");
       $('.oright').after(t);
       $('.oright').remove();
    });

    /* use the t jquery object you have defined */
    t.on('click', function(){
       $('#num').text("Reset?");
    });
});

Или делегат как @adeneo хорошо показывает

  • 0
    Спасибо, это работает: D
1

Вам придется делегировать эту работу

$(document).on('click', '#l2', function(){
   $('#num').text("Reset?");
});

желательно заменить document ближайшим нединамическим родительским элементом

  • 0
    Для OP больше написано о делегированной форме .on() здесь и здесь .
  • 0
    Спасибо вам обоим. Это все еще не работает, но теперь я знаю путь, чтобы выяснить, почему.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню