jquery easyui jsロード2回実行

5760 ワード

今日出会ったばかりの問題は、わけのわからない木が載せられたときに2回実行されました!
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

 2 <script>

 3 $(function(){

 4         $('#left_menu_tree').tree({

 5             url:'jslib/tree_data2.json',

 6             animate:true,//     /             .

 7             lines:true,//        .

 8             onClick:function(node){

 9                 //node.state      , 'open'    'closed'   typeof  undefined          

10                 if( typeof node.state != 'undefined'){

11                     $(this).tree('toggle', node.target);//  expanded/collapsed      ,target       DOM  .

12                 }else{

13                     CreateTab(node.text,node.attributes.url,node.iconCls);//     :  TAB 

14                 }

15              }

16         });

17 });

18 </script>

19 <ul id="left_menu_tree" class="easyui-tree" data-options="animate:true,fit:true"></ul>

最終的に原因を特定:
EasyUIコンポーネントにはclass="easyui-tree"が追加され、スクリプトによって属性が登録される.これにより、2回のレンダリングロードが作成されます.
EasyUIがhtmlコードを解析するときにclass宣言のeasyui-treeコンポーネントを解析してurlを1回要求し、jsで初期化されたコードを呼び出してデータを初期化し、重複ロードを招く
修正後のコード:
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

 2 <script>

 3 $(function(){

 4         $('#left_menu_tree').tree({

 5             url:'jslib/tree_data2.json',

 6             animate:true,//     /             .

 7             lines:true,//        .

 8             onClick:function(node){

 9                 //node.state      , 'open'    'closed'   typeof  undefined          

10                 if( typeof node.state != 'undefined'){

11                     $(this).tree('toggle', node.target);//  expanded/collapsed      ,target       DOM  .

12                 }else{

13                     CreateTab(node.text,node.attributes.url,node.iconCls);//     :  TAB 

14                 }

15              }

16         });

17 });

18 </script>

19 <ul id="left_menu_tree"  data-options="animate:true,fit:true"></ul>