Jquery удалить контент через AJAX - PullRequest
0 голосов
/ 01 августа 2010

У меня есть PHP-приложение, в котором есть функция удаления на одной из страниц. Я разрешаю пользователю удалить тег из своего профиля, нажав на тег. Как только пользователь щелкает тег, область содержимого в HTML, в которой ранее отображались теги, обновляется новым набором тегов.

Теперь проблема заключается в том, что из списка тегов пользователь впервые щелкает тег, он удаляется. Если пользователь теперь щелкает другой тег (из обновленной области), ничего не происходит.

 $("a.single_tag").click(function(){
   the_id = $(this).attr('id');
     $.ajax({
         type: "POST",
         data: "data="+the_id,
         url: "<?php echo site_url('user/deletetag/');?>/",
         success: function(msg)
         {
           $("#current_tags").fadeIn("slow");
           $("#current_tags").html(msg);

         }
    });  

Спасибо

Ответы [ 3 ]

5 голосов
/ 01 августа 2010

Вместо использования .click() для этого вы хотите .live('click', func), например:

$("a.single_tag").live('click', function() {

Когда вы используете .click() вы привязываете click обработчик к этим элементам , но когда содержимое заменяется, появляются новые элементы без обработчиков.С .live() он прослушивает событие click, когда он всплывает на document и выполняет ... был ли элемент там, когда страница загружалась или добавлялась позже, это не имеет значения ... Исправление вашей проблемы:)

0 голосов
/ 01 августа 2010

Это потому, что новые html-теги, которые вы только что получили от сервера, не имеют привязанной к ним функции «удалить» при клике.

0 голосов
/ 01 августа 2010

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

При обновлении содержимого привязка .click не существует для новых тегов a.

Редактировать: решение @Nick Craver заключается внамного лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...