我使用的是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调用。