Javascript创建一些奇怪的“缓存”

时间:2014-02-07 11:36:54

标签: javascript jquery html ajax

我搜索了一些解决方案但找不到任何东西。

我有一个使用CodeIgniter的项目,基本上是基于AJAX的(因为我无法刷新页面)。我的视图和我的JS在不同的文件上,每次加载视图时,我都会加载你自己的JS文件。

当我加载一个JavaScript文件,然后我调用另一个页面(因此,一个新的JavaScript),即使我从头部删除了上一页的JavaScript,它们的功能仍然存在,导致一些双重调用或怪异调用

即:

我有一个带有<ul id=tabs>的注册页面和一个带有另一个<ul id=tabs>的艺术家页面(它们是不同的页面)。

在JavaScript上注册,我有以下功能:

$(document).on("click", "#tabs li", function() {
    album.change($(this));
    if ($("#tabs").find('li').length < 7 && $(this).is(':last-child')) album.create();
});

而且,在JavaScript到艺术家页面上,我有这个功能:

$("#tabs li a").on("click", function(e) {
    var target = base_url+hash[1];

    tab = $(this).data("tab");

    $("#tabs li").removeClass('active');
    $("."+tab).parent().addClass("active");

    $(".tab").hide();
    $("#"+tab).fadeIn(100);

    if (tab == "bio-tab") {
        slider.photo();
        target = target+"/bio";
    }

    ($(document).find(".artist.intro").length > 0) ? $(document).scrollTop("520") :       $(document).scrollTop("90");

    History.pushState(null, null, target);
    e.preventDefault();
});

当我在艺术家页面上点击<ul id=tabs>的li时,它会执行这两个功能。

看起来AJAX正在创建类似我的JS文件的缓存,或类似的东西。有一种方法可以在我更改页面后销毁文件吗?

JIT,将ajaxcache设置为false不是替代方案,因为我的所有AJAX请求都是邮寄的。

2 个答案:

答案 0 :(得分:0)

我认为你一次又一次地加载相同的js库。尝试加载这样的脚本库:

<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.11.0.min.js"><\/script>')</script>

答案 1 :(得分:0)

您应该使用$("#tabs li").on("click", function() {代替$(document).on("click", "#tabs li", function() {

当将第二个参数传递给作为元素列表的.on函数时,jQuery会注册一个实时事件(与早期版本的jQuery中的.live()函数相同),这意味着事件将也可以附加到任何动态加载的内容