Spring-MVCの散歩道 > 応用の森(総合テクニック編) > ツリー階層構造表現
|
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Spring-MVCの散歩道 応用の森(生物分類階層Tree)</title> <meta charset="UTF-8" /> <meta name="Robots" content="index, follow" /> <meta name="keywords" th:attr="content=${siteKeyword}" content="Eclipse,Spring-MVC,Thymeleaf,myBatis,Java,JavaScript,jQuery,JSON" /> <meta name="description" content="Spring-MVCアプリケーション開発における、ジャンル別小技集です" /> <link rel="shortcut icon" href="./images/sPromenade_icon.ico" /> <link rel="stylesheet" href="./css/style.css" /> <link rel="stylesheet" href="./css/tree.css" /> <!--[if lt IE 9]> <script type="text/javascript" src="./js/jquery-1.11.2.js"></script> <![endif]--> <!--[if gte IE 9]><!--> <script type="text/javascript" src="./js/jquery-2.1.3.js"></script> <!--<![endif]--> <script type="text/javascript" src="./js/jquery.ui.1.11.4/jquery-ui.js"></script> <script type="text/javascript" src="./js/capture.js"></script> <script type="text/javascript" src="./js/child.js"></script> <script type="text/javascript" src="./js/header.js"></script> </head> <script type="text/javascript"> <!-- $(function(){ //「生物分類リストノード」クリック時の処理 /** * 元々のHTMLに、jQueryで要素を追加した場合 * その要素に対して、$(selector).click() イベントを定義しても * イベントをキャッチできない * そんな場合は、$(document).on('click', '.selector', function (e) { * を使おう */ $(document).on('click', '.ev_Expand', function (e) { //自分の親タグの name属性を取得する var data = $(this).parent().attr("name").split('_'); //自分の親タグの name属性(leaf)が"1" (子ノードなし)は何もしない //data[0] : leaf (ノード末端の判断) //data[1] : rute(経路) //leaf が"1" (子ノードなし)は何もしない if(data[0] == "1") return; //クリックされたアイコンorノード名のid要素を取得 var id = $(this).attr('id').split('_'); var parent = id[1]; //code //検索パラメータをJSON化 var param = { "parent" : parent, //親のcode "rute" : data[1] //経路 }; var div_obj = $('#div_'+parent); var img_obj = $('#img_'+parent); //現在のアイコンファイル名を保持 var img_name = $(img_obj).attr("src"); var html = $(div_obj).html(); if(html.length ==0) { //ノードは閉じている⇒展開する //Ajaxを実行する(Over 1.8系) $.ajax({ url : "./creatureclass.xhtml", dataType: "html", //サーバから返却されるデータの型(xml, html, json, jsonp, text ... type : "post", //post, get data : JSON.stringify(param), }).done(function(resData) { //callback data:response $('#div_'+parent).html(resData); //検索結果(creature_child.html)を子ノードDIVタグに描画 //アイコンの変更(collapse_l/collapse_l_b) var change; if(img_name.indexOf("expand.gif") >=0) { change = "./images/tree/collapse.gif"; } else { change = "./images/tree/collapse_l_b.gif"; } $(img_obj).attr("src",change); $(img_obj).attr({"alt":"Collapse","title":"Collapse"}); //描画が終わったら親フレームの高さをコンテンツに合わせて伸縮する var oParent = window.parent; if(window != oParent){ //親フレーム あり var h = $("#heder").height() + $("#main_contents").height() + 50; //親フレーム(iframe)の高さをAjast oParent.$("#main_frame").height(h); } }).fail(function(resData) { //・通信に失敗したとき //alert("personalajxedit:"+status); }); } else { //ノードは展開している ⇒縮退する $(div_obj).html(""); //innerHTML を破棄する //アイコンの変更(expand/expand_l_b) var change; if(img_name.indexOf("collapse.gif") >=0) { change = "./images/tree/expand.gif"; } else { change = "./images/tree/expand_l_b.gif"; } $(img_obj).attr("src",change); $(img_obj).attr({"alt":"Expand","title":"Expand"}); } }); }); //--> </script> </head> <body class="in_background"> <table class="treebody"> <tr> <td> <div class="treelistn" id="main_contents"> <!-- ノード情報 --> <div name="0_root"> <!-- +- アイコンを表示する Expand/Collapse Link --> <img class="ev_Expand iconpointer" id="img_root" src="./images/tree/expand.gif" alt="Expand" title="Expand" border="0" /> <!-- CategoryName Link --> <span class="ev_Expand iconpointer" id="lnk_root">生物分類リスト</span> <!-- 子Tree描画エリア(ここにAjaxによる検索結果が差し込まれます) --> <div class="treechdlist" id="div_root"></div> </div> </div> </td> </tr> </table> </body> </html> |