動的に追加された要素の jQuery セレクターが機能していないようです。簡単に言えば、機能が追加された一連のチェックボックスがあります。PHP は、追加するデータの行ごとに add(..) エントリを作成します (この場合、ファイル名、コメント、およびそれを削除するためのチェックボックス)。これらはハードコードされたテンプレートを使用して追加され、これは正常に機能します。add スクリプトは投稿しませんが、次のようなエントリが生成されます (簡潔にするために修正)...
<tr>
<td class="cell-file"><a href="...">afile.jpg</a></td>
<td class="cell-comment">A comment</td>
<td class="cell-remove a-center last"><input type="checkbox" id="...is_delete" name="...is_delete" value="1" class="removable"></td>
</tr>
別のチェックボックスの状態が変化したら、次のように、動的に追加されたすべてのチェックボックスをチェック済み (およびボタンを無効にする) に設定する必要があります...
function setAddButton(arg){
if(arg){
$('add-attachment').addClassName('disabled');
Event.stopObserving('add-attachment', 'click');
// Check all removable checkboxes
$('input.removable:checkbox').attr('checked', true);
}else{
$('add-attachment').removeClassName('disabled');
Event.observe('add-attachment', 'click', orderAttachment.add.bind(orderAttachment));
}
}
問題は、セレクター$('input.removable:checkbox')
が null に戻ることです。$('.removable:checkbox')
&を含むこのセレクターのさまざまな形式を試しまし$('input:checkbox.removable')
たが、何も選択されていません。
さまざまな投稿で、このセレクターは機能するはずですが、機能しません。したがって、これは、jQuery が動的に追加された要素を「見る」ことができないためであると想定しています。.live() または .on() の使用に関するさまざまな投稿を読みましたが、これは動的に追加された要素にイベント ハンドラーを追加することに関するものです。イベントハンドラーは必要ありません。動的に追加されたチェックボックスのチェック済み属性を選択して設定できるようにしたいだけです。
何か案は?