Вопрос по jquery, click, html, onclick –  вместо; -1

5

емя работы моего сайта я создаю новые div, используя jquery с классом «a». Я определил функцию click () для класса «a» следующим образом:

$(document).ready(function() {
    $(".a").click(function(){
        $(".a").hide();
    });
});

Проблема в том, что новые div, созданные с тем же классом, не вызывают эту функцию при нажатии. Другие div с классом "a", которые есть в начале, делают. Что я делаю неправильно?

Ваш Ответ

4   ответа
2

Это также может работать.

(function($) {  
  $(document).ready(function () {
    $('body').on('click', '.a', function() {
      $(this).hide();
    });
  });
}( jQuery ));

.on () присоединяет события к элементам управления, которые присутствуют и еще не представлены.

-1
Пожалуйста, не поддерживайте использованиеlive(), Это была неудачная ошибка. Пожалуйста, используйтеdelegate() вместо; -1 Levi Morrison
3

Попробуйте использовать.live() функция, которая также должна применяться к вновь вставленным элементам DOM, которые соответствуют вашему селектору:

$(document).ready(function() {
    $(".a").live('click', function(){
        $(".a").hide();
    });
});
Пожалуйста, не поддерживайте использованиеlive(), Это была неудачная ошибка. Пожалуйста, используйтеdelegate() вместо; -1 Levi Morrison
Это послало мне Googling, который поднял этот вопрос и ответил на вопрос, почемуdelegate() может быть лучше чемlive(): stackoverflow.com/questions/4204316/jquery-live-vs-delegate marramgrass
4
$(document).delegate('.a', 'click', function() {
  $(this).hide();
});
+1 И это само по себе не является динамическим элементом, который приходит после вызова. Убедитесь, что он статичен на странице или привязан после добавления. John Strickler
Отлично, спасибо! Nayish
+1 за использованиеdelegate() вместоlive()хотя в этом случае они почти не отличаются. Levi Morrison
Важно отметить, что селектор, который вы называете.delegate from должен быть как можно ближе к тому, кому вы хотите делегировать, насколько это возможно. Levi Morrison

Похожие вопросы