jquery:ajax的hashchange问题

jquery:ajax的hashchange问题,jquery,jquery-plugins,load,hashchange,Jquery,Jquery Plugins,Load,Hashchange,我正在使用一个onhashchange插件,但是当我想通过ajax加载页面时,我有一个问题需要解决 这是我的jquery $(document).ready(function(){ $(window).hashchange(function() { var hash = location.hash; var array_url = hash.split('#'); var page = $(array_url).last()[0]

我正在使用一个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>
1
2.
问题是在
散列更改后单击链接时,ajax页面将加载两次或更多

我怎样才能解决这个问题


谢谢。

摆脱单击侦听器内部的$('#content').load()调用。这样,当您更改哈希时,只有hashchange侦听器会处理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;
});

为什么要在数组上使用jQuery包装器中的函数?你难道不知道有内置的方法可以做到这一点吗,例如,
array_url.pop()
?@neal:我该如何放置日志?语法是什么?谢谢。完全不需要单击事件处理程序
hashchange
应该在单击链接时触发。@而且,这也是事实,OP可能需要它来执行其他操作operations@andy:非常感谢你指出这一点!问题解决了!:-)