jQuery: удалить элемент DOM, загруженный через ajax

Я использую jQuery для загрузки содержимого ajax на страницу. Однако попытка использовать функцию jQuery .remove(), похоже, не работает для удаления динамически загружаемого элемента.

Моя примерная функция:

function deletePerson(personID){
    if (confirm("Are you sure you want to permanently delete this person?\nYou cannot undo this action.")){
      $.post("ajax/personsDelete.php", { personNo: personID },
          function(data){
              $('#person' + personID).remove();
              alert("Response: " + data);
          });
    }
}

Как я могу удалить динамически загружаемые элементы с помощью jQuery?


person USA    schedule 16.02.2010    source источник
comment
Это должно работать нормально, какое значение содержит personID и как выглядит элемент html?   -  person Znarkus    schedule 16.02.2010
comment
Вы уверены, что personID содержит правильное значение внутри функции обратного вызова?   -  person tbreffni    schedule 16.02.2010
comment
Можете ли вы показать код для части загрузки ajax?   -  person GeekTantra    schedule 16.02.2010
comment
После прочтения этого сообщения: stackoverflow.com/questions/1903788/ Я решил просто перезагрузить вкладку через .load()... Более громоздко, но надежнее. (Я использую таблицы с моей таблицей)   -  person USA    schedule 16.02.2010
comment
Не имеет значения, откуда взялся элемент, т.е. был ли он на странице при загрузке или был загружен динамически. jQuery рассмотрит DOM так, как он есть, и удалит элемент. Почти наверняка у вас неправильный идентификатор элемента. Просмотрите элемент с помощью firebug и убедитесь, что #person+personID может совпадать с идентификатором, который вы пытаетесь удалить.   -  person JAL    schedule 16.02.2010


Ответы (1)


Измените контекст селектора, чтобы просмотреть ответ, добавив ,data:

function deletePerson(personID){
    if (confirm("Are you sure you want to permanently delete this person?\nYou cannot undo this action.")){
      $.post("ajax/personsDelete.php", { personNo: personID },
          function(data){
              $('#person' + personID, data).remove();
              alert("Response: " + data);
          });
    }
}

Поскольку он еще не добавлен в документ, вызываемый вами селектор по умолчанию не найдет его:
$('#person' + personID) совпадает с $('#person' + personID, document).

person Nick Craver    schedule 16.02.2010