【发布时间】:2010-11-25 01:50:39
【问题描述】:
我在页面上有一个链接,单击该链接会打开一个带有 Ajax 模式登录内容的厚框窗口。奇怪的是,如果我删除 alert(''); 下一行 jquery 代码将不起作用。 $('#logintest').before('<input type="hidden" value="' +st+ '" name="ReturnTo">');
如果alert(''); 存在,则隐藏的输入将被添加到厚盒模式窗口中,然后输入 ID 为“logintest”的输入。
我一直无法弄清楚为什么,任何人?
这是主页上的代码
<a class="login_links" id="myaccount" href="/myaccount.asp">My Account</a>
<script type="text/javascript" language="javascript">
$(function(){
$(".login_links").click(function(){
var t = this.title || null;
var s = $(this).attr("href");
var g = this.rel || false;
var l = '/v/AjaxLogin.asp?height=100&width=300&modal=true'
tb_show(t,l,g);
var st = s.substr(s.lastIndexOf("/") + 1);
alert('');
$('#logintest').before('<input type="hidden" value="' +st+ '" name="ReturnTo">');
return false;
});
});
</script>
这里是ajax页面上的代码
<div style="text-align:center ">
<form action="/login.asp" method="post" name="loginform">
<table border="0" cellpadding="3" cellspacing="3" style="margin:0 auto;">
<tr>
<td>Username:</td>
<td><input type="text" maxlength="75" size="30" value="" name="email"></td>
</tr>
<tr>
<td>Password:</td>
<td align="left"><input id="logintest" type="password" maxlength="20" size="20" name="password"></td>
</tr>
<tr align="right">
<td colspan="2"><input type="submit" value="Login"> <input type="submit" id="cancel" value="Cancel" onclick="tb_remove();return false;"></td>
</tr>
【问题讨论】:
-
@nick:它的功能来自thickbox,本质上显示了隐藏的“灯箱”div。如果我没记错的话 tb_show 实际上在调用它时会进行一些异步 dom 操作和构建。我敢打赌它与警报一起使用的原因是它增加了一个延迟,该延迟足以让 tb_show 完成其工作
-
函数有点长,贴在这里,我看看能不能链接。
-
延迟正是我的想法