再次从文档中删除jQuery ajax添加的js文件?

时间:2010-08-13 22:34:41

标签: javascript jquery html

我的网站运行在ajax“框架”上。每当用户打开新页面时,该页面将加载必要的css和js文件以正确查看页面并将其添加到当前文档中。 js文件在jQuery中加载如下:

function getJS(jsfiles) {
    $.each(jsfiles, function(i, val) {
        $.getScript(val);
    });
}

我的问题是无论何时加载js文件,该文件都会永久地添加到文档中,并在所有ajax“子站点”中运行。因此,我遇到了保留函数名称的问题,执行时需要某些DOM元素存在的函数,否则会抛出错误等等。有没有办法再次从文档中删除这些文件?

3 个答案:

答案 0 :(得分:1)

您可以使用self-executing function确定要加载的JavaScript文件的内容范围。或者尝试为脚本块分配ID并通过执行以下操作删除它们:$("id of the script block").remove();

答案 1 :(得分:1)

我不知道jQuery如何附加新脚本,但您可以执行AJAX请求并在回调中构建自己的脚本元素,为它们提供一个可以在以后选择删除的类。

$.ajax({
    url:'test.js',
    dataType: 'text',
    success: function(script) {
        var head = document.getElementsByTagName('head')[0];
        var scr_elem = document.createElement('script');
        scr_elem.setAttribute("class","new_script");
        scr_elem.setAttribute("className","new_script");
        scr_elem.type="text/javascript";
        scr_elem.appendChild(document.createTextNode(script));
        head.appendChild(scr_elem);
    }
});

// Later on
$('.new_script').remove();

请注意,我只在Webkit和Firefox中测试过这个。

答案 2 :(得分:-2)

您可以尝试做类似的事情

$('head').empty();
$('head').append('<script src="yourscript.js" type="text/javascript" />');

希望这有帮助