【问题标题】:How to delete li element in ajax response function如何删除ajax响应函数中的li元素
【发布时间】:2012-10-03 22:37:31
【问题描述】:

我正在尝试删除 li 元素,它是单击的 a 元素的父元素。

这是我的代码:

function vanish(id_arg){
        $.ajax({
            url: "/vanish/",
            type: "POST",
            data: {id_to_delete: id_arg},
        }).success(function(data){
           document.getElementsByTagName('li').getElementById(id_arg).remove();
        });
    }

这是我的html:

{% for i in p %}
<li id="{{i.id}}"> <a>{{i.name}}</a><a onclick="vanish({{i.id}})" class="item">delete</a></li>    
{% endfor %}

p 是包含名称和 ID 的查询响应。

vanish() 将从数据库中删除该项目,作为 ajax 响应,我也想从页面中删除该项目。我需要删除而不是隐藏。

我的问题是它没有从页面中删除,我正在尝试使用 javascript 和 remove() 捕获 li 但始终找不到正确的代码。

【问题讨论】:

    标签: javascript python html ajax django


    【解决方案1】:

    下面将选择所有链接并删除其上方的父元素。如果您在页面上有其他链接,我建议您给链接一个类,以便您可以指定要删除的链接。另请注意,在 li 上调用 remove() 也会删除元素内的所有内容。

    $('#' + id_arg).click(function(){
        $(this).parent().remove();
    });
    

    编辑: 快速阅读问题,您可以将其包含在您的 ajax 调用的成功函数中:

    $('#' + id_arg).closest('li').remove();
    

    【讨论】:

    • 作为ajax响应,我可以使用这个功能吗?
    • 更新了我的答案,你可以在你的ajax响应中使用第二个代码sn-p。
    【解决方案2】:

    只要先找到孩子,然后从文档正文中删除即可。

              var child = document.getElementById(id_arg);
              document.body.removeChild(child);
    

    【讨论】:

    • 但上面写着TypeError: document.getElementsByTagName("li").getElementById is not a function,这里有错别字?
    • 对不起,我的错。不需要getElementsByTagName。您可以通过id 直接找到您的孩子。更新了答案。
    • NotFoundError: Node was not found 它现在说。元素存在。 :(
    • 确保您使用的是正确的id 元素。提醒id_arg 并验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多