我需要在 struts2-jquery 3.3.3 中重新加载一个 sj:tab,到目前为止我尝试过:
在那个版本中实现
$('#myPanel').tabs("load", "#myTab");
它可以工作并重新加载,但是绑定(bind)了更多事件处理程序,当我通过 sj:submit 提交时,它提交了两次,我尝试在重新加载之前使用 jquery 删除所有事件处理程序,但我没有任何区别。所以事件处理程序呈指数增长:
> $('#myPanel').tabs("load", "#myTab");
1 event handler per button
> $('#myPanel').tabs("load", "#myTab");
2
> $('#myPanel').tabs("load", "#myTab");
4 .. 16 .. 32
我如何杀死 sj:submit 中的所有事件处理程序?
最佳答案
这对我来说可能是一种难闻的气味,因为我需要在应用程序中的新“状态”上更改选项卡,所以我认为这是个好主意:
( ajax call fired by a sj:submit --> POST )
# in the server check if the state changed, if so returns success and the client asks to reload.
$.subscribe("change_state"){
...
$('#myPanel').tabs("load", "#myTab");
# (http GET new tab)
};
选项卡加载顺利,但为了防止旧事件触发,我必须为每个按钮设置变量
$.subscribe("change_state", function(event){
if (!reloaded){
$('#myPanel').tabs("load", "#myTab");
reloaded = 1;
}
)};
$.document.ready(function(){
reloaded = null;
});
如果有人对此版本的 struts 有正确的设计,我很乐意提供 100 赏金
关于jquery-ui - 如何重新加载 sj :tab in struts2-jquery 3. 3.3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42274722/