所以我們都知道在一個ajax更新事件中必須反彈到新的dom元素。是委託是一種選擇,但委託不適用於所有情況。例如,委託對於需要在加載而不是點擊事件時需要完成的事情沒有幫助。JQuery Ajax - 使用上下文參數而不是委託重新綁定元素?
不是我的代碼分成委託處理程序和需要是反彈的更新處理程序,我寧可定義與上下文參數一個方法被調用喜歡網頁的變化,使每次:
function onPageUpdate(context) {
$('a', context).click(...); // event handlers
$('.chart', context).addClass(...); // load handlers
}
在dom就緒之後,將使用上下文參數null調用它。在ajax更新上,上下文將容納新的dom元素。這樣我就再也不用擔心委派或ajax更新了。
但是,我很難解決這個問題。由於Ajax回調:
function onSuccess(data) {
// data contains new dom elements like: <div><a>Click</a><span>chart<span></div>
// replace old elements with new ones
$('a').replaceWith('a', data);
$('span').replaceWith('span', data);
// call pageUpdate with the new context
onPageUpdate(data);
}
是否有可能使像我這樣工作的期待?替換工作正常,但onPageUpdate沒有綁定任何這些新的元素,我不知道是否因爲上下文只是一個字符串對象或什麼。任何人都可以想出一種方法來完成這項工作?
在我看來,這是比委託更好的解決方案,因爲只有一個方法適用於所有處理程序,只有需要綁定的元素才擁有它。
嗯,我試過這個,但綁定似乎並不堅持。這可能適用於幕後的一些對象引用問題。我發現它的工作方式之一是單獨調用每個替換後的頁面方法,像onPageUpdate($('a')),雖然這感覺更慢 – user842800 2012-03-04 14:33:44