【问题标题】:having trouble adding html to with jQuery使用 jQuery 添加 html 时遇到问题
【发布时间】: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">&nbsp;<input type="submit" id="cancel" value="Cancel" onclick="tb_remove();return false;"></td>
</tr>

【问题讨论】:

  • @nick:它的功能来自thickbox,本质上显示了隐藏的“灯箱”div。如果我没记错的话 tb_show 实际上在调用它时会进行一些异步 dom 操作和构建。我敢打赌它与警报一起使用的原因是它增加了一个延迟,该延迟足以让 tb_show 完成其工作
  • 函数有点长,贴在这里,我看看能不能链接。
  • 延迟正是我的想法

标签: jquery thickbox


【解决方案1】:

Ajax 加载是异步的。它在没有警报的情况下无法工作的原因是来自 ajax 请求的 html 尚未附加到 dom 中。您需要将该代码移至成功回调。我不确定 TB 是否提供了这一点。

【讨论】:

  • 感谢您确认我原来的想法。
猜你喜欢
  • 2017-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-01
  • 1970-01-01
相关资源
最近更新 更多