2010-11-25 26 views
0

私は、クリックしたときにAjaxモーダルログインコンテンツを含む太いボックスのウィンドウを開くリンクをページに表示しています。奇妙なのは、alert('');を削除すると、次のjquery行のコードが機能しないということです。 $('#logintest').before('<input type="hidden" value="' +st+ '" name="ReturnTo">');jQueryでhtmlを追加する際に問題が発生しました

alert('');がある場合、「logintest」というIDを持つ入力の前に、hiddenbox入力がthickboxモーダルウィンドウに追加されます。

なぜ、誰にも分かりませんでしたか?ここで

はメインページ

<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> 

上のコードであり、ここで

<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> 

+1

「tb_show」とは何ですか? –

+1

@nick:thickboxからのその関数は、隠された "lightbox" divを基本的に示しています。私が正しくリコールすれば、tb_showは実際にはいくつかの非同期DOM操作とビルド時にビルドを行います。 Id氏はそれが警告と一緒に働く理由は、tb_showが作業を終了するのに十分な長さの遅延を追加しているということです。 – prodigitalson

+0

機能はここに投稿するのに少し時間がかかります。 – user357034

答えて

1

Ajaxの読み込みが非同期であるAjaxのページ上のコードです。アラートなしで動作しない理由は、ajaxリクエストのhtmlがまだdomに追加されていないためです。そのコードを成功のコールバックに移動する必要があります。 TBがそれを提供するかどうかはわかりません。

+0

私の元の考えを確認していただきありがとうございます。 – user357034

関連する問題