2012-09-19 47 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