jquery の専門家の皆さんがこれを手伝ってくれることを願っています。私はhtml/jqueryにチャットルームを持っています。新しいユーザーがチャットルームに来るたびに更新されるユーザーの動的リストを持つ DIV があります。いずれかのユーザーをクリックすると、プライベート チャット用の jquery ダイアログが表示されます。それはすべてうまくいきます。問題は、最初のプライベート チャット (jquery ダイアログ) を開いた後で、新しいユーザーがチャットルームに参加すると、チャットルーム ユーザーのリンクが機能しなくなることです。(ユーザーリストを更新しようとしても)。Mozilla の開発者コンソールで確認したところ、ダイアログを開くと、HTML ページの最後に DIV セクションが追加されていることがわかりました。そのとき、jquery によって生成された他のすべてのリンクが機能しなくなります。
問題の関数は次のとおりです (最初のプライベート チャット ダイアログが開かれるまで、任意の数のユーザーに対して正常に機能し、その後、リンクが機能しなくなります)。
<script type="text/javascript">
function privateChatLoader() {
$(document).ready(function() {
$('#chatRoomUsers td a').each(function() {
var chatRoomId = $.trim($('#chatRoomId').val());
var fromUsername = $.trim($('#username').val());
var privateMessageTop = '<tr><td align="left" valign="middle" class="popup-box-top"><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td width="10"> </td><td width="300" align="left" valign="middle"><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td width="23" align="left" valign="middle"><img src="images/icon-popup.png" width="16" height="16" /></td><td align="left" valign="middle" class="popup-title-text ">_TO_USERNAME_</td></tr></table></td><td align="right" valign="middle"><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td align="right" valign="middle"> </td><td width="18" align="right" valign="middle"><a href="#" onClick="closePrivateMessage();" id="dialog2"><img src="images/button-close.png" width="15" height="14" border="0" /></a></td></tr></table></td><td width="10"> </td></tr></table></td></tr>';
var $dialog = $('<div></div>')
var $link = $(this).on('click', function() {
var toUsername = $link.attr("id");
privateMessageTop = privateMessageTop.replace("_TO_USERNAME_", toUsername);
$dialog
.load('privatemessage.php?cid=' + chatRoomId + '&s=' + fromUsername + '&r=' + toUsername)
.dialog({
//autoOpen: false,
title: privateMessageTop,
close: toUsername,
width: 400,
height: 300
});
$link.click(function() {
$dialog.dialog('open');
return false;
});
return false;
});
});
});
}
*更新: * 気にしないでください。私はそれを働かせました。問題は、ダイアログにロードしていたページで、すべての JavaScript ファイルと jquery ファイルを (メイン ページからのコピー アンド ペーストから) 再度ロードしていたことです。そのページからすべてを削除すると、すべてが意図したとおりに機能します。みんなありがとう