我搜索了一些解决方案但找不到任何东西。
我有一个使用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请求都是邮寄的。
答案 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()
函数相同),这意味着事件将也可以附加到任何动态加载的内容