jquery html()删除脚本标签

前端之家收集整理的这篇文章主要介绍了jquery html()删除脚本标签前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要替换我的页面中的div的内容与ajax调用的html结果。
问题是,html有一些必要的脚本,它似乎jquery html()函数将其打包出来,
我需要过滤响应,只得到一个特定的div。

我想一个解决方法是从ajax响应中提取所有的脚本标签,然后附加他们做DOM,但我有麻烦这样做。

这里是我的代码;

$('a.link-vote').live('click',function(){
        var idFeedback = $(this).attr('id').split('-')[1];
        var href = $(this).attr('href');
        $('.Feedback-' + idFeedback + '-loader').show();
        $.ajax({
            type: "POST",url: href,success: function(response){
               var x = $(response).find('#Feedback-'+ idFeedback).html();
               $('.Feedback-' + idFeedback + '-loader').hide();
               $('#Feedback-'+ idFeedback).html(x);

            }
        });
        return false;
    });

我发现这个老主题
http://www.jb51.cc/article/p-hybnjvib-bss.html

但是任何结论。我试过建议的解决方案,但没有一个工作。

编辑:
我似乎找到了一个解决方案,基于那个老主题,但它不漂亮;

var dom = $(response);
                // var x = $(response).find('#Feedback-'+ idFeedback).html();
                $('.Feedback-' + idFeedback + '-loader').hide();
                //$('#Feedback-'+ idFeedback).html(x);

                $('#Feedback-'+ idFeedback).html(dom.find('#Feedback-'+ idFeedback).html());

                dom.filter('script').each(function(){
                    var obj = $(this);
                    $('#Feedback-'+ idFeedback + ' .Feedback-comments').append(obj);
                });

必须有一个简单的方法

解决方法

编辑:我累了,不想。您只需使用原生innerHTML方法,而不是.html():
$('#Feedback-' + idFeedback)[0].innerHTML = x;

原始答案:

我的预感是,你链接的答案不适合你,因为包括的脚本调用src属性,而不是脚本内容之间的< script>和< / script>标签。这可能工作:

$.ajax({
    url: 'example.html',type: 'GET',success: function(data) {

        var dom = $(data);

        dom.filter('script').each(function(){
            if(this.src) {
                var script = document.createElement('script'),i,attrName,attrValue,attrs = this.attributes;
                for(i = 0; i < attrs.length; i++) {
                    attrName = attrs[i].name;
                    attrValue = attrs[i].value;
                    script[attrName] = attrValue;
                }
                document.body.appendChild(script);
            } else {
                $.globalEval(this.text || this.textContent || this.innerHTML || '');
            }
        });

        $('#mydiv').html(dom.find('#something').html());

    }
});

注意,这没有进行任何测试,可能会吃婴儿。

猜你在找的jQuery相关文章