2016-12-05 77 views
1

我有我的网站上这部分的问题:Click事件每个AJAX调用后乘以

$(document).ready(function(){ 

    function loadContent(val){ 
    $(".gallery").load(val, function(){ 
    console.log("Loaded"); 
    }); 
} 

$(".Javascript").click(function(){ 
    loadContent("Javascript.html"); 
}); 

$(".JQuery").click(function(){ 
loadContent("JQuery.html"); 
}); 

$(".HTML").click(function(){ 
loadContent("HTML-CSS.html"); 
}); 

$(".APIs").click(function(){ 
    loadContent("APIs.html") 
}); 

$(".Angular").click(function(){ 
loadContent("Angular.html") 
    }); 
}); 

基本上,我每次点击一个链接的时候,我带来了新的HTML文件与图像在画廊它带有load()函数。但看着控制台,每次我点击一下,GET的数量就增加了一倍,这就是控制台上显示的数字:

XHR完成加载:GET“http://localhost:8888/script.js”。

我怎样才能防止这种相乘和什么是造成这种行为?

回答

0

该代码看起来正确。可能你包含这个脚本两次?或者可能你有两个.gallery块? 尝试将其内联写入HTML中的标签内。它有帮助吗?

+0

我在每一个新的HTML文件的末尾有一个

0

JQuery的.load(url)还将包括和执行默认情况下请求的HTML里面的脚本。通过指定选择器,脚本将被排除。

一个例子:

// Load article.html with scripts: 
$("#a").load("article.html"); 

// Load article.html#content without scripts: 
$("#b").load("article.html #content"); 
+0

我不明白你的意思,字面加入“#内容”?它什么也没有显示。 – Sergi

+0

不,只有你想加载到你的页面的部分(通过ID或类)。 –

0

毕竟解决的办法是增加.off()的每次点击功能:

$(".Javascript").off('click').click(function(){ 
    loadContent("Javascript.html") 
});