重複の可能性:
ループ内の Javascript クロージャー - 簡単な実用例
「ダッシュボード」Web ページのステータスの表を作成しています。各ステータスは、「オン」または「オフ」の状態です。
button/buttonset
jQueryを使用してスイッチ/トグル コントロールを使用し、ユーザーがステータスの値を切り替えられるようにしようとしています。ajax データベース クエリの結果として、テーブルとボタンを動的に作成します。
基本的に、ユーザーがボタンの 1 つをクリックしたときに ajax クエリを起動しようとしていますが、クリック イベントを適切に割り当てるのに苦労しています。
私の最初のラウンドでは、どのボタンがクリックされても、最終的なリスト値が発生しました。
だから、あはは!これは、標準的な「JavaScript クロージャ」の問題です。(ので、私は考えました...)
さらにいじっても何も得られず、クロージャの問題を十分に理解していないため、私の手法が間違っている理由を理解できません。
呼び出したいコードは次のとおりです。
function SetStatus(item, status) {
var params = '{itemName: "' + item + '", status: "' + status + '"}';
$.ajax({
type: "POST",
url: "WebServices/Dashboard.asmx/SetItemStatus",
data: params,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: StatusSet,
error: ShowError
});
}
私が試しているコードの現在のバージョンは次のとおりです。
$(itemOnButton).click(
function (_item) {
SetStatus(_item, 'On');
} (itemName)
);
その結果、データベースから結果を取得するとすぐに (結果が表示される前に)、== 'On' のSetStatus
最後のアイテムに対して起動します。status
私はこれが単純であることを知っており、基本的な閉鎖の問題であると確信していますが、頭を壁にぶつけています! 助けてくれてありがとう!