2

ドロップダウンリストを含むページがあり、ユーザーがリストからオプションを選択すると、ajax呼び出しがトリガーされ、一連のチェックボックスが作成されます。チェックされているものとチェックされていないものがあります。チェックボックスに変更が加えられたかどうか、つまりチェックされているかどうかを記録する必要があります。以下を使ってみましたが、何も起こりませんでした。

私はjQueryバージョン1.7.1を使用しています。

$("input:checkbox").change(function(){ 
    //some stuff happens
});

そこにアラートがありましたが、何も起きていません。だから私はそれを包んでみました$(document).ready(...が、もう一度、何もしませんでした。つまり、DOMの準備ができたときにチェックボックスが作成されていないため、そのアクションをアタッチするタグがないのではないかと思います。

だから今、私は途方に暮れています。onChange="someFunction()"入れずにわからない

.append("<input type='checkbox' id='" + theData.DATA + "' value='" + theData.DATA + "'>" + tempName + "<br />");

それは実際にチェックボックスを作成しています。

何かご意見は?

4

2 に答える 2

7

あなたは正しいです。jQuery1.7を使用している場合は.on、以下の構文を使用してください。

$(<closest_checkbox_container>).on('change', 'input:checkbox', function(){ 
    //some stuff happens
});

古いバージョンを使用している場合は、を使用してください.delegate

$(<closest_checkbox_container>).delegate('input:checkbox', 'change', function(){ 
    //some stuff happens
});

注:<closest_checkbox_container> DOMの準備ができたときに使用できる最も近いチェックボックスコンテナーはどこにありますか。

上記のメソッドはと呼ばれdelegated eventsます。参照(委任されたイベントの下のセクションを読んでください)

$("input:checkbox").change(function(){または、これらのチェックボックスの追加が完了した後に書き込むことをお勧めします。ただし、すべてのチェックボックスが1回だけ追加されると仮定した方がよいでしょう。

于 2012-05-25T14:19:23.037 に答える
2

ajax呼び出しからの成功応答で再バインドするか、「on」(http://api.jquery.com/on/)を使用して変更イベントにバインドすることができます。「on」を使用すると、変更イベントがDOMに追加されたときにセレクターに一致する新しい要素にバインドされます。(v1.7より前の場合はデリゲートを使用)

于 2012-05-25T14:18:02.957 に答える