如何在追加之前从ajax响应中删除元素?

时间:2018-05-31 11:12:06

标签: jquery ajax

我有一个运行良好的AJAX。但是在将AJAX响应附加到我的页面之前,我需要完全删除某个HTML元素。

我的AJAX代码如下所示:

$.ajax({
    url: 'http://url-to-the-site.com',
    dataType: 'json',
    type: 'GET',
    data: {},
    success: function(data){

        for( x in data ){
        var articles = data[x].html;

        console.log(articles);

           $(".appender").before(articles);

        } 

    },
    error: function(data){
        console.log(data);
    }
});

因此,变量articles有一个名为<footer>的元素/标记。

我需要在附加articles

之前完全删除此内容

我在我的AJAX中尝试了这个,但我知道这是错误的:

$(articles).find('footer').remove();

有人可以就此提出建议吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我对jQuery了解不多,但我可以尝试用纯JavaScript解决它。

  1. 您没有提供足够的内容来决定文章的数据类型。 但是从我看到的,'articles'是一个字符串,因此你不能在其上调用DOM函数。
  2. 我尝试使用正则表达式从文章字符串中删除页脚。

    以下是我的尝试:

    var example = "<article><p>Foo Bar</p><footer>Foo Bar</footer></article>";
    var formatted = example.replace(/<footer>.*<\/footer>/, "");
    console.log(formatted);
    

    输出:

    <article><p>Foo Bar</p></article>
    

    在将代码添加到DOM之前,将上面的代码放在循环中。

    示例:

    $.ajax({
        url: 'http://url-to-the-site.com',
        dataType: 'json',
        type: 'GET',
        data: {},
        success: function(data){
    
        for( x in data ){
        var articles = data[x].html;
    
           $(".appender").before(articles.replace(/<footer>.*<\/footer>/, ""));
    
        } 
    
    },
    error: function(data){
        console.log(data);
    }
    

    });

    [更新]

    为了迎合换行和其他角色:

    var formatted = example.replace(/<footer.*>(.|[\n\r])*<\/footer>/, "");