jquery-ui - 如何重新加载 sj :tab in struts2-jquery 3. 3.3?

标签 jquery-ui struts2-jquery

我需要在 struts2-jquery 3.3.3 中重新加载一个 sj:tab,到目前为止我尝试过:

  • 向 sj:tab 添加一个listenTopic,因为我读到它还没有工作
    在那个版本中实现
  • 在任何情况下,重新加载选项卡,如:

  • $('#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/

    相关文章:

    java - 在 Struts 2 中使用 Ajax 和 Oracle 数据库自动完成文本框

    java - 如何在 Struts 2 中实现分页

    javascript - jquery msgbox 的任何替代品

    jquery - 如何处理日期选择器控件?

    jquery - 如何设置 jQuery Combobox 的样式使其看起来像普通的选择下拉列表

    java - Struts 2 - 拦截使用CKEditor上传的图像文件

    javascript - 放置在表格单元格边框上时未触发放置事件

    javascript - 使用 jQuery 的 each() 在 JavaScript 中更清晰(嵌套)的闭包

    javascript - struts2 jquery ajax 和客户端验证不能一起工作

    java - Struts 2 在下拉列表中选择框显示值