JSON応答からHTMLを追加すると、イベントハンドラはイベントバインドを失うように見えます。 .live()
関数を使用すると、ハンドラが動作するようになります。jQuery動的チェックボックスイベント処理
$.each(result[0], function(i,wellList) {
$jsonResult = wellList["@name"];
$uid = wellList["@uid"];
$dynamicCheckBoxDiv += '<input type="checkbox" name="checkbox-1" value="'+ $uid
+ '" class="wellCheck" id="checkbox-'+i+'" />' +
'<label for="checkbox-'+i+'">' + $jsonResult + '</label>';
});
$dynamicCheckBoxDiv += '</fieldset></div>';
//Append results to div
$("#dynamicCheck").append($dynamicCheckBoxDiv).page();
$(".wellCheck").live('click', (function() {
クリックイベントが発生すると、このイベントが発生するようになりました。しかし、チェックボックスを数回クリックすると、チェックボックスが間違ったボックスにランダムに関連付けられ、ワンクリックでクリックイベントの発生が開始されます。誰もこれを見たことがありますか?
他のボタンをすべてチェックする方法を追加するにはどうすればよいですか?彼らは動的に追加されているので、それだけでこの機能をバイパスするようだ:
// When select No wells is clicked this method is run
$('#selectNone').click(function() {
$('#dynamicCheck .wellCheck').find(':checkbox').attr('checked', 'checked');
});
それは方法に入るのが、ボックスのいずれかをチェックするためにdoesntのようです。 jQueryとjQueryモバイルがこのページに追加されていて、両方のメソッドがdocument.ready
に存在します。
javascriptには、あなたが知っているローカル変数を定義する方法があります。*** var *** - スコープを汚染する代わりにそれらを使用してください。 – rlemon
変数はローカルです。これらはそれぞれの上に初期化されます(まだgetJSONの戻り関数内にあります)。 「each」ループを調べるたびに変数を再作成する必要があるのでしょうか? –
いいえ、申し訳ありませんが、私はそれを認識していませんでした - 私はあなたが範囲外のグローバル変数を作成していると仮定しました。 – rlemon