jquery:ajax 的 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];
$('#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 页面将被加载两次或多次。
我该如何解决这个问题?
谢谢。
I am using an onhashchange plugin, but I have a problem to get it right when I want to load pages through ajax.
Here is my 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;
});
});
the html,
<a href="#1" class="clickme">1<a>
<a href="#2" class="clickme">2<a>
<div id="content">
</div>
The problem is the ajax page will be loaded twice or more when the link is clicked after the hash
has changed.
How can I fix this?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您正在执行两次负载:
You are doing the load twice:
摆脱点击侦听器内部的 $('#content').load() 调用。这样,当您更改哈希值时,只有 hashchange 侦听器会处理 ajax 调用。
Get rid of the $('#content').load() call inside of the click listener. That way when you change the hash, only the hashchange listener will take care of the ajax call.