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