当网址更改时加载ajax

时间:2012-09-19 20:10:26

标签: javascript jquery ajax

我只是第一次搞乱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语句检查是否需要加载内容,但只有在再次单击该按钮时才会触发此操作。

任何人都可以帮我按一下按钮来加载内容吗?

感谢。

1 个答案:

答案 0 :(得分: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>