我在我的网站上创建导航。导航工作正常但当我回到主站点时,来自js文件的所有脚本都不起作用。导航脚本:
var default_content="";
$(document).ready(function(){
//Ajax navigate
checkURL();
$('footer a').click(function(){
checkURL(this.hash);
});
default_content = $('#login_box').html();
setInterval("checkURL()",250);
.........
方法:
var lasturl="";
function checkURL(hash)
{
if(!hash) hash=window.location.hash;
if(hash != lasturl)
{
lasturl=hash;
if(hash=="")
$('#login_box').html(default_content);
else
loadPage(hash);
}
}
function loadPage(url)
{
url=url.replace('#page','');
$.ajax({
type: "POST",
url: "include/help4meApi.php",
data: 'page='+url+'&tag=navigation',
dataType: "html",
success: function(msg){
if(parseInt(msg)!=0)
{
$('#login_box').html(msg);
}
}
});
}
问题是当我回到主站点时脚本不起作用。
答案 0 :(得分:0)
问题来自$('#login_box').html(default_content);
。当你调用.html()
时,元素中绑定的事件将被清除。
退格时,回到主页面,事件处理程序已经不存在了,所以你必须再次注册
//For show and hide register values
$("#registerInputsBtn").click(function(){
$(".register_information").hide(1000);
$(".register_values").show(1000);
$("#firstname").focus();
});
再次注册您将内容分配给#login_box
的代码段。例如快速修复:
if(hash==""){
$('#login_box').html(default_content);
$("#registerInputsBtn").click(function(){
$(".register_information").hide(1000);
$(".register_values").show(1000);
$("#firstname").focus();
});
}
但这里的代码不是DRY :(重新安排页面加载的流程以及建议在正确的流程中注册事件。