2016-12-05 75 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") 
});