想要實現從本地中加載json文件,通過事件來動態的插入到ul中時,遇到了一小bug
html中代碼是這樣的
<ul class="easyui-tree" id="tt"></ul>
js中的代碼
$(".next-menu:nth-child(1) a").click(function() {var $IDstr = $(this).attr("id"),$treeIDNum = parseInt($(this).attr("treeID")),jsonURL = "json/" + $IDstr + ".json",node;addAttr2Tree(jsonURL);changeImgSrc($treeIDNum); });});function changeImgSrc(nodeID){var node = $("#tt").tree('find', nodeID);if(node){$("#tt").tree('select', node.target);}if (node.attributes) {$("#img-box").attr("src", node.attributes.url);}}function addAttr2Tree(URL){$("#tt").tree({url: URL,method: "get",animate: true,lines: true});}起初是想通過一個按鈕的點擊事件來動態的加載tree的內容就是如上代碼,addAttr2Tree 是用來將點擊按鈕時對應的本地json數據加到html中的ul標簽中, changeImgSrc 是對tree節點的一些選中操作以及圖片的加載,但是無論怎么調試,總是會出現一條錯誤
無法獲取attributes屬性!!!我反復確認attributes是完整無缺的放在json文件里的而且總是第一次點擊按鈕時才會出現這種錯誤,第二次及其以后,這種錯誤是沒有的
后來我就想到,是不是因為json數據動態加載的速度比不上程序代碼執行的速度?!
果然不出我所料!easyui中tree自帶了一個方法onLoadSuccess 當數據成功加載時,才會執行一些操作
所以
$(".next-menu:nth-child(1) a").click(function() {var $IDstr = $(this).attr("id"),$treeIDNum = parseInt($(this).attr("treeID")),jsonURL = "json/" + $IDstr + ".json",node;addAttr2Tree(jsonURL);$("#tt").tree({onLoadSuccess: function(){changeImgSrc($treeIDNum);}});});代碼改成這樣就可以了。
以上所述是小編給大家介紹的jQuery Easyui異步加載tree的問題解析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
新聞熱點
疑難解答