我有一个没有页面更改的 html 网站。它只是使用 ajax 调用将不同的元素加载到页面上的每个位置。我需要在第一次加载页面后运行登录功能(因为它需要索引上的元素存在),但是当我使用 $(document).ready(login) 时,它会在每次加载元素时触发(因为它将元素加载到页面上,它陷入了无限循环)。除了将它放在我的索引页面的底部(这看起来很脆弱)之外,有没有办法让它在索引页面完成加载后加载,但不是每次 ajax 请求向页面添加内容时都运行它?
我的登录功能如下所示:
function login ()
{
if($.cookie('employee'))
employee = $.cookie('employee');
if(employee && !employee.login)
$("div.middle").load('login.html');
else
$("div.middle").load('main.html');
}
function logout ()
{
//FIXME send a logout request to server to end session also
employee = null;
$.cookie('employee', null);
$("div.middle").load('login.html');
}
我最初的准备函数看起来像://全局变量 var employee = new Object;
$(document).ready(function(){
$("div.leftColumn").html(buildLeftNav());
//set height of middle if height of leftColumn is less than height of middle
if($("div.leftColumn").css('height') < $("div.middle").css('height'))
$("div.center").css('height' , $('div.middle').css('height'));
//handle login and logout
$.cookie.json = true;
login();
});
我设置了一个小提琴来说明:http: //jsfiddle.net/uZVP4/