我在报告中加载并以标签格式用jquery-ui显示它。该报告由json中的ajax调用返回,函数将其格式化为HTML。示例代码如下:
<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,那么&#34;标签&#34;格式完全丢失(标签显示为我的部分上方的链接,点击链接会将您带到页面下方的那一部分。)
我认为在函数开头完全重新设置reportdiv html会使我回到原始状态并允许它每次都正常工作。有什么建议吗?
答案 0 :(得分:0)
经过更多测试,发现破坏是可行的方法。如果我已经设置了标签,请运行销毁,否则,跳过销毁(http://jsfiddle.net/scmxyras/1/):
if(tabs!=undefined)$( "#reportdiv" ).tabs("destroy");