2012-09-19 45 views
0

我只是第一次搞亂ajax。當URL更改時加載ajax

目前我正在根據網址從文本文件加載文本。

這裏是我如何做它:

var home_url = "blahblah/index.html#home"; 
var test_url = "blahblah/index.html#test"; 

$(document).on("click",".ajax_load",function(){ 
    if (location.href === home_url) { 
     $("#main").load("src/home.txt"); 
    }; 
    if (location.href === test_url) { 
     $("#main").load("src/test.txt"); 
    }; 
}); 

這工作,但內容不加載,直到我按下了按鈕後第二次。更易於理解:

button press -> 2nd button press -> content loaded 

我想這是因爲我的代碼不註冊的URL,直到第一次按下後,再if報表檢查內容是否需要加載,但這只是觸發,直到按鈕再次點擊。

任何人都可以幫助我使內容加載只有一個按鈕按?

謝謝。

+0

您需要顯示一些HTML並檢查代碼是否在代碼片段中正確的上下文中。除了將'location.href'改進''location.hash',我看不出爲什麼ajax無法觸發(考慮到你正在做其他更好的工作) – Alexander

回答

3

問題是,在事件被觸發後,鏈接會更改「location.href」。因此,第一次點擊時,將會執行錯誤的(或沒有)ajax加載代碼,之後URL會被更改,因此第二次點擊會檢查正確的URL。

因此,解決辦法,我建議是這樣的:不檢查位置網址,但您的鏈接指定的網址:

$('.ajax_load').bind('click', this, function(){ 
    if (this.href === home_url) { 
     $("#main").load("src/home.txt"); 
    }; 
    if (this.href === test_url) { 
     $("#main").load("src/test.txt"); 
    }; 
}); 

當心:「this.href」總是包含完整的URL,即使鏈接用一個簡單的錨點指定:

<a href="#home">home</a> 
+0

謝謝,這個工作:) – Harry