- Timestamp:
- 2013/05/02 18:11:36 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_12-dev/html/user_data/packages/sphone/js/category.js
r22605 r22796 1 /*------------------------------------------ 2 指定されたノードを、オープンまたはクローズする 3 ------------------------------------------*/ 4 function openOrClose(tgt){ 5 //指定ノードが「hidden」のとき、リストを可視化 6 if(tgt.style.visibility == "hidden"){ 7 tgt.style.display = "block"; 8 tgt.style.visibility = "visible"; 9 tgt.style.height = "auto"; 10 tgt.style.paddingTop = "0.25em"; 11 tgt.style.lineHeight = "1em"; 12 tgt.style.opacity = 1.0; 13 } 14 //指定ノードが「hidden」でないとき、リストを隠す 15 else{ 16 tgt.style.display = "none"; 17 tgt.style.visibility = "hidden"; 18 tgt.style.height = "0px"; 19 tgt.style.paddingTop = "0"; 20 tgt.style.lineHeight = 0; 21 tgt.style.opacity = 0; 22 } 23 } 24 25 /*------------------------------------------ 26 リストープン処理 27 ------------------------------------------*/ 28 function listopen(lv, num){ 29 var tgt = document.getElementsByClassName("level" + lv)[num]; 30 //次のレベルをサーチ → 次のレベルのリストをオープンする 31 for(var i=0; i < document.getElementsByClassName("level" + (lv+1)).length; i++){ 32 var next_tgt = document.getElementsByClassName("level" + (lv+1))[i]; 33 //li 34 if (next_tgt.parentNode == tgt || next_tgt.parentNode.parentNode == tgt){ 35 openOrClose(next_tgt); 36 } 37 } 38 //次のレベルをサーチ → 表示ボタンの状態を変更 39 for(var i=0; i < tgt.childNodes.length; i++){ 40 var next_tgt = tgt.childNodes[i]; 41 //ul 42 if(next_tgt.tagName == "UL"){ 43 if(next_tgt.style.height == "0px"){ 44 if(event.srcElement.parentNode.className == "category_header plus"){ 45 event.srcElement.innerText = '−'; 46 event.srcElement.parentNode.className = "category_header minus"; 47 } 48 next_tgt.style.height = "auto"; 49 } 50 else{ 51 for(var i=0; i<next_tgt.parentNode.childNodes.length; i++){ 52 if(event.srcElement.parentNode.className == "category_header minus"){ 53 event.srcElement.innerText = '+'; 54 event.srcElement.parentNode.className = "category_header plus"; 55 } 56 } 57 next_tgt.style.height = "0px"; 58 } 59 } 60 } 61 } 62 63 /*------------------------------------------ 64 クリックイベントを設定する 65 ------------------------------------------*/ 66 function setclickevent(tgt, lv, num){ 67 //レベル1以外の時は非表示に 68 if(lv!=1){ 69 tgt.style.visibility = "hidden"; 70 tgt.style.display = "none"; 71 tgt.style.height = "0px"; 72 tgt.style.lineHeight = 0; 73 tgt.style.paddingTop = 0; 74 tgt.style.paddingBottom = 0; 75 if(tgt.parentNode.tagName == "UL"){ 76 tgt.parentNode.style.height = "0px"; 77 tgt.parentNode.style.margin = "0"; 78 tgt.parentNode.style.padding = "0"; 79 tgt.parentNode.style.border = "none"; 80 } 81 } 82 var hasLink_flg; 83 if(tgt.childNodes.length){ 84 for (var j = 0; j < tgt.childNodes.length; j++) { 85 //クリック範囲の拡大 86 if(tgt.childNodes[j].tagName == 'A'){ 87 tgt.setAttribute('onclick', 'location.href="' + tgt.childNodes[j].getAttribute('href') + '"'); 88 } 89 //アコーディオンリストの操作イベント関数を追加 90 else if(tgt.childNodes[j].tagName == 'UL'){ 91 //▶を表示し、リストオープン関数を追加 92 var linkObj = document.createElement("a"); 93 linkObj.innerText = '+'; 94 tgt.childNodes[0].className="category_header plus"; 95 tgt.childNodes[0].appendChild(linkObj); 96 j++; 97 linkObj.parentNode.setAttribute('onclick', 'listopen(' + lv + ',' + num + ')'); 98 99 //tgt.setAttribute('onclick', 'listopen(' + lv + ',' + num + ')'); 100 break; 101 } 102 } 103 } 104 } 105 1 106 /*------------------------------------------ 2 107 初期化 3 108 ------------------------------------------*/ 4 109 //level?クラスを持つノード全てを走査し初期化 5 $(function(){ 6 $("#categorytree li").each(function(){ 7 if ($(this).children("ul").length) { 8 //▶を表示し、リストオープンイベントを追加 9 var tgt = $(this).children('span.category_header'); 10 var linkObj = $("<a>"); 11 linkObj.text('+'); 12 tgt 13 .click(function(){ 14 $(this).siblings("ul").toggle('fast', function(){ 15 if ($(this).css('display') === 'none') { 16 tgt.children('a').text('+'); 17 } else { 18 tgt.children('a').text('-'); 19 } 20 }); 21 }) 22 .addClass('plus') 23 .append(linkObj); 110 function initCategoryList(){ 111 var lv = 0; 112 //level?クラスを持つノード全てに、クリックイベントを追加 113 while(document.getElementsByClassName("level" + (++lv)).length){ 114 for (var i = 0; i < document.getElementsByClassName("level" + lv).length; i++) { 115 setclickevent(document.getElementsByClassName("level" + lv)[i], lv, i); 24 116 } 25 } );26 } );117 } 118 }
Note: See TracChangeset
for help on using the changeset viewer.