0

我有以下动态树构建选项卡。选项卡有一个 iframe,它的源来自 json 文件:

<script type="text/javascript"> 
$(function(){   
   $('#tree_menu').tree({    
   animate:true,    
    onClick: function open1(node){
      if ($('#tabs').tabs('exists',node.id)){
      $('#tabs').tabs('select', node.id); 
       } else {
        $('#tabs').tabs('add',{
        title: node.id,
        content: "<iframe id='superframe' frameborder='0' width='100%' scrolling='auto' height='99%' src='" + node.attributes.url + "'><iframe>",
        closable:true, 
        tools:[{  
         iconCls:'icon-mini-refresh',  
         handler:function(){  
           alert('refreshing'); 
        $('#superframe').get(0).contentWindow.location.reload();    
         }  
        }] 

        });
      }
    }
  });

  $('#tabs').tabs({
  onBeforeClose: function(title){
    return confirm('Are you sure you want to close ' + title);
    }
  });

});
</script>

我想要实现的是在选项卡上单击图标-迷你刷新,以在该特定选项卡中重新加载 iframe。使用我上面的代码,我可以做到这一点,但它只适用于第一个打开的选项卡。从第二个开始,它不再工作了。它只是不令人耳目一新......我已经尝试了在谷歌上找到的所有可能的 iframe 重新加载方法,但没有任何成功。

你能帮我解决这个问题吗?非常感谢!

4

1 回答 1

2

iframe 的 id 应该是唯一的,请尝试以下代码,

 <script type="text/javascript"> 
$(function(){   
   $('#tree_menu').tree({    
   animate:true,    
    onClick: function open1(node){
      if ($('#tabs').tabs('exists',node.id)){
      $('#tabs').tabs('select', node.id); 
       } else {
        var frameId='superframe'+node.id;
        $('#tabs').tabs('add',{
        title: node.id,
        content: "<iframe id='"+frameId+"' frameborder='0' width='100%' scrolling='auto'     height='99%' src='" + node.attributes.url + "'><iframe>",
        closable:true, 
        tools:[{  
         iconCls:'icon-mini-refresh',  
         handler:function(){  
           alert('refreshing'); 
        $('#'+frameId).get(0).contentWindow.location.reload();    
         }  
        }] 

        });
      }
    }
  });

  $('#tabs').tabs({
  onBeforeClose: function(title){
   return confirm('Are you sure you want to close ' + title);
   }
 });

});
</script>
于 2013-02-25T05:34:26.710 回答