У нас есть список деталей на странице просмотра "garagecar / view / index.ctp". Список деталей заполняется PHP при первой загрузке страницы. Каждая часть имеет кнопку удаления. Когда пользователь нажимает «удалить», ссылка контроллера удаляет деталь, в то время как JQuery / Ajax удаляет HTML, который отображает деталь в индексе:
$html->link(__('remove', true),
array('controller'=>'garage_parts',
'action'=>'delete',
$gpart['GaragePart']['id']),
array('class'=>'js-ajax remove_part'));
$(".remove_part").click(function(){
var answer = confirm("Remove this part?");
if (answer){
var partdiv = $(this).parent().parent();
$.ajax({
type: "post",
url: this.href,
});
$(partdiv).remove();
}
return false;
});
Когда пользователь хочет динамически добавить новую деталь, мы используем функцию JQuery $ (). Load для загрузки «garagepart / view / addpart.ctp». В addpart.ctp есть функция $ (). Ajax, которая добавляет деталь через JSON и добавляет HTML-код новой детали в список деталей в index.ctp.
Однако, если вы нажмете кнопку удаления в этой новой части, вышеупомянутая функция JQuery не оценивает. Функция не может удалить HTML, даже если она структурирована точно так же, как части, предварительно загруженные с помощью PHP. Ссылка на удаление Cakephp по-прежнему работает, поэтому эта часть исчезнет, если вы перезагрузите страницу.
Почему JQuery не динамически удаляет часть, которая динамически добавляется? Удаление работает только для частей, которые были предварительно загружены с помощью PHP, а не для новых, которые добавляются через JQuery / Ajax. Пожалуйста, дайте мне знать, если вам нужно, чтобы я отправил больше кода ... спасибо!