2014-10-06 44 views
0

我正在加载报告并以jquery-ui以标签格式显示。该报告由json中的ajax调用返回,并且函数将其格式化为HTML。示例代码如下:JQuery-ui标签页 - 全新内容无法正常工作

<div id="reportdiv"> 
</div> 

<script> 
function displayreport(objectid) 
{ 
    $("#reportdiv").hide(); 
    $("#reportdiv").html(""); 
    $.ajax({ 
     type: "GET", 
     headers: { 'authtoken': getToken() }, 
     url:'/reportservice/v1/report/'+objectid.id, 
     success: function(data){ 
      if(data == null) 
      { 
       alert("That report does not exist."); 
      } 
      else 
      { 
       var retHTML = dataToTabHTML(data.config); 
       $("#reportdiv").html(retHTML).fadeIn(500); 
       $(function() { 
        tabs = $("#reportdiv").tabs(); 
        tabs.find(".ui-tabs-nav").sortable({ 
         axis: "x", 
         stop: function() { 
         tabs.tabs("refresh"); 
         } 
        }); 
       }); 
      } 
     } 
    }); 
} 
</script> 

这可以在第一次调用displayreport时正常工作。但是,如果用户输入另一个值并再次运行displayreport,则“标签”格式将完全丢失(标签显示为我的部分上方的链接,单击链接会将您带到页面的下一部分)。

我想完全重新设置reportdiv html函数的开头会使我回到原来的状态,并允许它每次正常工作。有什么建议么?

+0

看看这个的jsfiddle证明。第一次点击重新加载按钮,它可以工作。第二次点击它,它有我描述的问题。想法? [链接] http://jsfiddle.net/scmxyras/ – Doug 2014-10-06 21:26:53

回答

0

经过更多的测试,发现摧毁是要走的路。如果我已经设置了标签已经运行了破坏,否则,跳过破坏(http://jsfiddle.net/scmxyras/1/):

if(tabs!=undefined)$("#reportdiv").tabs("destroy");