我正在加载报告,并使用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,则“选项卡”格式将完全丢失(这些选项卡显示为我的部分上方的链接,单击链接可将您带到页面下方的该部分)。
我认为在该函数的开头完全重新设置reportdiv html会使我回到原始状态,并使其每次都能正常工作。有什么建议?
经过更多测试后,发现销毁是必经之路。如果我已经设置了选项卡,请运行销毁,否则,请跳过销毁(http://jsfiddle.net/scmxyras/1/):
if(tabs!=undefined)$( "#reportdiv" ).tabs("destroy");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句