繁体   English   中英

JSF + jQuery:AJAX渲染强制重新绑定到客户端(jQuery)事件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM