我不確定基於ajax響應修改DOM的最佳做法。我會盡量讓代碼進行談話,因爲很難解釋。使用jQuery修改基於AJAX結果的DOM
// page has multiple checkboxes
$("input[type='checkbox']").live('click', function {
var cb = $(this); // for the sake of discussion i need this variable to be in scope
$("form").ajaxSubmit({ dataType: "script" });
}
服務器發送回一個響應,和JS得到eval'd,這意味着「CB」超出範圍。
什麼我迄今所做的就是創建了幾個輔助函數:
var target = undefined;
function setTarget(val) {
target = val;
}
function getTarget() {
return target;
}
以及可當作第一個代碼片斷到這一點:
// page has multiple checkboxes
$("input[type='checkbox']").live('click', function {
setTarget($(this));
$("form").ajaxSubmit({ dataType: "script" });
}
然後在服務器的響應我在需要的地方調用getTarget。這似乎是hackish ...任何建議?
如果數據類型選項是腳本,那麼響應被全球eval'd - 沒有必要爲成功處理程序。 – user140550 2009-08-12 02:09:19
你的返回腳本是做什麼的?如果可以避免發送腳本,那麼避免發送腳本總是很好的...否則,您可能會將存儲變量放在全局範圍內,但這樣會冒發出併發性問題。 – 2009-08-12 02:16:44
所以服務器應該返回一個html片段,即使該請求是爲JavaScript? – user140550 2009-08-12 02:22:50