可能重複(關閉):
Javascript closure inside loops - simple practical example的jQuery/JavaScript的分配環路點擊事件
我創建狀態的表的 「儀表板」 網頁。每個狀態都處於「開」或「關」狀態。
我想使用jQuery button/buttonset
有切換/切換控制,以允許用戶切換狀態的值。我作爲ajax數據庫查詢的結果動態創建表和按鈕。
我基本上試圖在用戶點擊其中一個按鈕時觸發一個ajax查詢,但我努力正確地指定click事件。
無論點擊哪個按鈕,我的第一個回合都有最終列表值。
因此,阿哈!這是一個標準的「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)
);
的結果是,一旦從數據庫中獲取的結果(然後才顯示)SetStatus
與status
=='開'的最後一個項目觸發。
我知道這很簡單,我仍然相信這是一個基本的關閉問題,但我把頭撞在牆上!謝謝你的幫助!
你的第一個例子擺脫了自動點擊,但仍然只有最後一項傳入,無論按鈕。第二個例子是什麼使頁面工作。謝謝! – mbm29414
不客氣。在stackoverflow上閱讀[這非常好的答案](http://stackoverflow.com/questions/111102/how-do-javascript-closures-work)。 – metadings