首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery: ajax的hashchange问题

jquery: ajax的hashchange问题
EN

Stack Overflow用户
提问于 2011-06-28 22:39:41
回答 2查看 2.2K关注 0票数 0

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

这是我的jquery,

代码语言:javascript
复制
    $(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,

代码语言:javascript
复制
<a href="#1" class="clickme">1<a>
<a href="#2" class="clickme">2<a>

<div id="content">
</div>

问题是,在hash更改后单击链接时,ajax页面将加载两次或更多。

我该如何解决这个问题呢?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-28 22:44:40

您正在执行两次加载:

代码语言:javascript
复制
$(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;
});
票数 2
EN

Stack Overflow用户

发布于 2011-06-28 22:43:52

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6508244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档