jquery: problem with the hashchange with ajax



我使用的是onhashchange插件,但当我想通过ajax加载页面时,我遇到了一个问题。

这是我的jquery,

    $(document).ready(function(){
    $(window).hashchange(function() {
        var hash = location.hash;
        var array_url = hash.split('#');
        var page = $(array_url).last()[0];
        $('#content').load( page + '.php', function(){
        });
    });
    $('.clickme').click(function(){
        var url = $(this).attr('href');
        var array_url = url.split('#');
        var page = $(array_url).last()[0];
        location.hash = url;
        $('#content').load( page + '.php', function(){
        });
        return false;
    });
});

html、

<a href="#1" class="clickme">1<a>
<a href="#2" class="clickme">2<a>
<div id="content">
</div>

问题是,当hash更改后单击链接时,ajax页面将被加载两次或两次以上。

我该怎么解决这个问题?

谢谢。

您正在进行两次加载:

$(window).hashchange(function() {
    var hash = location.hash;
    var array_url = hash.split('#');
    var page = $(array_url).last()[0];
    $('#content').load( page + '.php', function(){ //ONCE
    });
});
$('.clickme').click(function(){
    var url = $(this).attr('href');
    var array_url = url.split('#');
    var page = $(array_url).last()[0];
    location.hash = url; //GOTO HASH CHANGE ^^
    $('#content').load( page + '.php', function(){  //TWICE
    });
    return false;
});

去掉click监听器内部的$('#content').load()调用。这样,当您更改哈希时,只有hashchange侦听器会处理ajax调用。

相关内容

  • 没有找到相关文章

最新更新