【发布时间】:2011-12-21 03:45:32
【问题描述】:
这对我来说是一个重复的问题,我有一个解决方案,但它有点混乱,我想知道是否有更好的解决方案或以某种方式完全避免这个问题。
当我从 jQuery 绑定到 DOM 组件,然后使用 JSF/AJAX 重新渲染该组件时,会出现此问题。
例如:
<h:commandButton>
<f:ajax render="rerenderedObject" />
</h:commandButton>
<h:panelGroup id="rerenderedObject">
...
</h:panelGroup>
在 jQuery 方面:
var componentBound = false;
function bindToClick() {
if (componentBound === false) {
componentBound = true;
$('#rerenderedObject').click(function() {
// DO SOMETHING
});
}
}
每当rerenderedObject 重新渲染(按下按钮)时,与click 的绑定就会丢失
我已经通过使用这段代码绑定到 JSF 来克服这个问题:
$(window).load(function () {
jsf.ajax.addOnEvent(function(data){
if (data.status === "success") {
bindToClick();
}
});
});
然而存在多个事件绑定的问题(因为不是每个 ajax 事件都会重新渲染 rerenderedObject),因此存在 componentBound` 变量。
这是我的解决方案,我想知道是否有人必须处理这个问题以及您的解决方案是什么。
谢谢!
【问题讨论】: