やあ、
編集:あなたのほとんどが提案したように、私はで.on()
はなく試し.live()
てみましたが、それは役に立ちませんでした。この問題はajax呼び出しだけでなく、jqueryを使用して新しい要素を追加しようとしても、イベントは新しく作成された要素に登録されません。
以下のスクリプトを変更しました。
既存のテーブルでクリックイベントがトリガーされた場合、新しいテーブルを追加しています。クリックイベントは、最初のテーブルでは適切にトリガーされますが、スクリプトによって新しく追加された次のテーブルではトリガーされません。
問題はにあると思います.each()
。この機能は、新しく追加された要素では機能しません。この問題を処理する方法はありますか?
ajaxイベントによってコンテンツが変更されるhtmlページがあります。ページに含まれるすべてのテーブルにクリックイベントを登録したいのですが、最初は正常に機能しますが、ajaxによってコンテンツが変更されると、イベントがトリガーされます
。HTML:
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js"></script>
</head>
<style>
table{
border-collapse:collapse;
}
table td{
border:1px solid;
}
</style>
<body>
<table clk="true">
<thead>
<tr>
<td>S.No</td>
<td>Name</td>
</tr>
</thead>
<tbody>
<tr><td>1</td> <td>Rama Rao</td></tr>
<tr><td>2</td> <td>Tom Cruise</td></tr>
<tr><td>3</td> <td>Tom Honks</td></tr>
<tr><td>4</td> <td>Will Smith</td></tr>
</tbody>
</table>
</body>
脚本:
$('table').each(function(){
if($(this).attr('clk')=="true"){
$(this).find('tbody tr td').live('click',function(){
var str= $('table').html();
str = '<table clk="true">'+str+'</table>';
$('table').after(str);
});
}
});
注:テーブルに属性clk = "true"のみがある場合は、イベントを登録する必要があります。 「各」ループが必須であるかどうかを確認するには。
どんな助けでも大歓迎です。