簡體   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