所以我们都知道在一个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:
// replace old elements with new ones
$('a').replaceWith('a', data);
$('span').replaceWith('span', data);
// call pageUpdate with the new context
onPageUpdate(data);
}
是否有可能使像我这样工作的期待?替换工作正常,但onPageUpdate没有绑定任何这些新的元素,我不知道是否因为上下文只是一个字符串对象或什么。任何人都可以想出一种方法来完成这项工作?
在我看来,这是比委托更好的解决方案,因为只有一个方法适用于所有处理程序,只有需要绑定的元素才拥有它。