今天用了JQUERY UI TABS,如果按官方的HTML样式,提前构建好 DIV UL LI那么调用tabs方法,会自动生成tabs的样式,但我的需求是根据后台获取的数据,动态JSON构建此格式的HTML,此时构建好之后,再调用 官方提供的API,发现格式与样式都不对了,请大家帮看看,多谢了!如下为代码:<script language="javascript" type="text/javascript">
        $(document).ready(function() {
            initView();
            bindTabs();//没效果
        });        function bindTabs() {
            $("#tabs").tabs();
        }        //ajax异步初始化tabs的html架构
        function initView() {
            var $divTabs = $("#tabs");
            $divTabs.append("<img src='../../Images/spinner.gif' />");
            $.ajax(
            {
                type: "get",
                url: "CategoryHandler.ashx",
                dataType: "json",
                success: function(data) {                    var $ulObj = $("<ul id='ulObj'></ul>");
                    $divTabs.append($ulObj);
                    for (var i = 0; i < data.length; i++) {
                        var jsonItem = data[i];
                        var $liObj = $("<li ><a name='" + jsonItem.CID + "'>" + jsonItem.CNAME + "</a></li>");
                        $ulObj.append($liObj);
                        var $newDivObj = $("<div id='tabs_" + jsonItem.CID + "'>" + jsonItem.CDETAIL + "<br></div>");
                        $divTabs.append($newDivObj);
                    }                    $divTabs.find("img").remove();                }
            });
        }
    </script>tabsjqueryui

解决方案 »

  1.   

    改同步的, bindTabs();执行的时候你ajax还没返回得到数据呢,要不 bindTabs();放回调里面        $(document).ready(function() {
                initView();
                ////bindTabs();//没效果
            });
     
            function bindTabs() {
                $("#tabs").tabs();
            }
     
            //ajax异步初始化tabs的html架构
            function initView() {
                var $divTabs = $("#tabs");
                $divTabs.append("<img src='../../Images/spinner.gif' />");
                $.ajax(
                {
                    type: "get",
                    url: "CategoryHandler.ashx",
                    dataType: "json",
    //async:false,/////////要不改成同步,不过网速慢浏览器会假死,体验不好
                    success: function(data) {
     
                        var $ulObj = $("<ul id='ulObj'></ul>");
                        $divTabs.append($ulObj);
                        for (var i = 0; i < data.length; i++) {
                            var jsonItem = data[i];
                            var $liObj = $("<li ><a name='" + jsonItem.CID + "'>" + jsonItem.CNAME + "</a></li>");
                            $ulObj.append($liObj);
                            var $newDivObj = $("<div id='tabs_" + jsonItem.CID + "'>" + jsonItem.CDETAIL + "<br></div>");
                            $divTabs.append($newDivObj);
                        }
     
                        $divTabs.find("img").remove();            bindTabs();////////////////放这里
     
                    }
                });
            }
      

  2.   

    楼上的俩位大神新年好,这个我也有用,但还是没效果,我在想是不是JQUERY UI TABS对这种动态构建HTML元素的支持问题呢?