我正在使用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页面将加载两次或更多。
我该如何解决这个问题呢?
谢谢。
发布于 2011-06-28 22:44:40
您正在执行两次加载:
$(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;
});发布于 2011-06-28 22:43:52
去掉单击监听器内部的$('#content').load()调用。这样,当您更改散列时,只有hashchange侦听器会处理ajax调用。
https://stackoverflow.com/questions/6508244
复制相似问题