AJAX を介して要素を動的に設定した後、jQuery 関数が新しいコンテンツで動作しないという問題があります。
たとえば、「更新」ボタンを押すと入力されるファイルのリストがあります。リスト内のアイテムをダブルクリックしたときにファイル名で警告を表示したい。各アイテムには「ファイル」クラスがあります。
私はこのコードを使用しています:
$('.file').on('dblclick', function(event){
alert($(this).html());
});
これは、最初に存在するすべての要素に対して機能しますが、AJAX 呼び出しの後では機能しません。
これは学校の課題であり、組み込みの jQuery AJAX 機能ではなく、通常の Javascript AJAX メソッドを使用する必要があります。これが問題であり、jQuery が新しく入力された要素に気付かない理由だと思います。
更新ボタンはこの関数を呼び出しています:
function getFileList()
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("files").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","filelist.php",true);
xmlhttp.send();
}
jQuery の AJAX メソッドではなく、AJAX 呼び出しに通常の JS を使用せざるを得ない場合、jQuery にこれらの新しい要素を適切に認識させるにはどうすればよいですか?