jQuery, нажав «Удалить», все элементы исчезают, но при обновлении элементы возвращаются, а удаляется только удаленный.

0

Я понимаю, почему это происходит, но я не понимаю, как это исправить.

Разметка HTML:

<tr>
    <th>Attachment</th>
    <td>
        <ul>{% for attachment in lineup.attachments %} {% if lineup.obsolete %}
            <li>{{ attachment.name}}</li>{% else %}
            <!-- this will show just the last file -->{# set attachment = lineup.attachments|last #}
            <li><a href='http://files.example.com/{{ attachment.file_url }}' id='{{ attachment.id }}'>{{ attachment.name }}</a>
                <!-- remove attachment link -->{% if perm.remove_files %}
                <input type='hidden' class='id' value='{{ attachment.id }}' /><a class='remove_file' href='javascript:void(0)' style="margin-left: 20px;">Remove</a>{% endif %}</li>{% endif %} {% endfor %}</ul>
    </td>
</tr>

jQuery delete:

$(document).ready(function(){
    $('.remove_file').click(function(){
        $this = $(this);
        $id = $this.parent().find('.id').val();
        if(confirm('Are you sure you want to delete this file?')){
            $.get('phplib/remove_lineup_attachment.php',{ id: $id }, function(){
                $this.parent().parent().remove();
            });
        }
    });
});

Поэтому он удаляет нужное вложение из базы данных, которую я хочу удалить. Проблема в том, что если у меня есть 5 вложений, показывающих, когда я нажимаю delete на вложении #5, все они исчезают, а затем, когда я обновляю страницу, все они возвращаются за исключением #5 который был тем, который я удалил.

Как выглядит мой раздел вложений: http://i.imgur.com/wZSlkWU.png

  • 3
    Будет $this.parent().remove(); вместо $this.parent().parent().remove(); работа для тебя? Трудно сказать, основываясь на предоставленном вами HTML. Пожалуйста, опубликуйте предоставленный HTML.
  • 0
    @j08691 j08691 Вот это да! Прямо под моим носом, ха-ха, спасибо за быстрое предложение.
Теги:

1 ответ

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

Предполагая, что вы хотите удалить <li>, а не <ul> (это то, что вы в настоящее время нацеливаете с использованием .parent().parent()), для вас должно работать следующее:

$this.parent().remove();

Ещё вопросы

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