[英]JSF + jQuery : AJAX Rendering forces a re-binding to client side (jQuery) events
对我来说,这是一个重复的问题,我有一个解决方案,但这有点混乱,我想知道是否有更好的解决方案,或者总有办法避免该问题。
当我从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`变量。
这是我的解决方案,我想知道是否有人要处理这个问题,您的解决方案是什么。
谢谢!
使用jQuery.live()
代替。 它将在新添加的元素上放置一个监视器,然后重新应用相同的事件处理程序。
$('#rerenderedObject').live('click', function() {
// DO SOMETHING
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.