JQuery-ui Tabs - 重新加载页面,其中全新的内容无效

时间:2014-10-06 19:47:30

标签: jquery-ui tabs

我在报告中加载并以标签格式用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会使我回到原始状态并允许它每次都正常工作。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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

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