Ignore:
Timestamp:
2013/03/05 08:52:08 (13 years ago)
Author:
pineray
Message:

#2166 カテゴリーブロックのロジックを見直し.

Location:
branches/version-2_12-dev/html/user_data/packages/sphone
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/html/user_data/packages/sphone/css/block.css

    r21995 r22602  
    250250    vertical-align: middle; 
    251251} 
     252#categorytree li ul { 
     253    border: none; 
     254    margin: 0; 
     255    padding: 0; 
     256} 
    252257 
    253258#categorytree li:first-child { 
  • branches/version-2_12-dev/html/user_data/packages/sphone/js/category.js

    r22586 r22602  
    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).children('span.category_header') 
    95                         .addClass('plus') 
    96                         .append(linkObj); 
    97                 j++; 
    98                 linkObj.parentNode.setAttribute('onclick', 'listopen(' + lv + ',' + num + ')'); 
    99  
    100                 //tgt.setAttribute('onclick', 'listopen(' + lv + ',' + num + ')'); 
    101                 break; 
    102             } 
    103         } 
    104     } 
    105 } 
    106  
    1071/*------------------------------------------ 
    1082初期化 
    1093------------------------------------------*/ 
    1104//level?クラスを持つノード全てを走査し初期化 
    111 function initCategoryList(){ 
    112     var lv = 0; 
    113     //level?クラスを持つノード全てに、クリックイベントを追加 
    114     while(document.getElementsByClassName("level" + (++lv)).length){ 
    115         for (var i = 0; i < document.getElementsByClassName("level" + lv).length; i++) { 
    116             setclickevent(document.getElementsByClassName("level" + lv)[i], lv, i); 
     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); 
    11724        } 
    118     } 
    119 } 
     25    }); 
     26}); 
Note: See TracChangeset for help on using the changeset viewer.