Changeset 23453


Ignore:
Timestamp:
2014/05/28 03:58:09 (7 years ago)
Author:
Seasoft
Message:

#2157 (Windows8対応)

  • 単純にした。
    • 当初クリックで開いたメニューと、その後開いたメニューの扱いを同等とした。
    • ポイントでの動作を全階層同様にした。
    • 一部処理をサブルーチン化した。
  • .hover() を .off() で抑制しても、再び .hover() を呼ぶとイベントがスタックされる不具合を回避。

タブレットのクリック不具合は回避できていない認識。(未検証)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_13-dev/html/user_data/packages/admin/js/eccube.admin.js

    r23451 r23453  
    356356    }; 
    357357 
     358    eccube.navi = {}; 
     359 
     360    eccube.navi.openMenu = function($target) { 
     361        $target 
     362            // 対象を開く 
     363            .addClass('sfhover') 
     364            // 対象以外を閉じる 
     365            .siblings('li') 
     366                .removeClass('sfhover') 
     367                .find('li').removeClass('sfhover'); 
     368    }; 
     369 
    358370    // グローバルに使用できるようにする 
    359371    window.eccube = eccube; 
     
    367379        $("#navi").find("div").click(function(){ 
    368380            naviClicked = true; 
     381            $("#navi").addClass('active'); 
    369382 
    370383            var parent = $(this).parent('li'); 
    371             var level1 = $(this).parents('li.on_level1'); 
    372  
    373             if (parent.hasClass('on_level1')) { 
    374                 // クリックしたメニューが第1階層なら開閉を切り替え. 
    375                 if (!parent.hasClass('sfhover')) { 
    376                     parent.addClass('clicked'); 
    377                 } else if (parent.hasClass('clicked')) { 
    378                     parent.removeClass('clicked'); 
    379                 } 
    380             } else { 
    381                 // 第2階層以下なら第1階層を開いた状態にする. 
    382                 level1.addClass('clicked'); 
    383             } 
    384             // クリックしたメニュー以外のメニューを閉じる. 
    385             level1.siblings('li') 
    386                 .removeClass('clicked') 
    387                 .removeClass('sfhover') 
    388                 .find('li').removeClass('sfhover'); 
    389  
    390             // ナビゲーションがアクティブであれば、マウスオーバーを有効に. 
    391             $("#navi") 
    392                 .on('mouseleave', function(){ 
    393                     $(this).not(':has(li.on_level1.clicked)').find('li') 
    394                         .off('mouseenter') 
    395                         .off('mouseleave'); 
    396                 }) 
    397                 .has('li.on_level1.clicked').find('li.on_level1').hover( 
    398                     function(){ 
    399                         $(this) 
    400                             .addClass('sfhover') 
    401                             .siblings('li') 
    402                                 .removeClass('sfhover') 
    403                                 .removeClass('clicked') 
    404                                 .find('li').removeClass('sfhover'); 
    405                     }, 
    406                     function(){ 
    407                         $(this).not('.clicked').removeClass('sfhover'); 
    408                     } 
    409                 ); 
    410  
    411             if (parent.hasClass('clicked')) { 
    412                 parent.addClass('sfhover'); 
    413             } else if (parent.hasClass('sfhover')) { 
    414                 parent 
    415                     .removeClass('sfhover') 
    416                     .find('li').removeClass('sfhover'); 
    417             } else { 
    418                 parent 
    419                     .addClass('sfhover') 
    420                     .siblings('li') 
    421                         .removeClass('sfhover') 
    422                         .find('li').removeClass('sfhover'); 
     384 
     385            // 開閉を切り替え. 
     386            if (!parent.hasClass('sfhover')) { 
     387                eccube.navi.openMenu(parent); 
     388            } else { 
     389                parent.removeClass('sfhover'); 
     390            } 
     391        }); 
     392        // ナビゲーションがアクティブであれば、マウスオーバーを有効に. 
     393        $("#navi").find('li').hover(function(){ 
     394            if ($("#navi").hasClass('active')) { 
     395                eccube.navi.openMenu($(this)); 
    423396            } 
    424397        }); 
     
    426399        $(document).click(function(){ 
    427400            if (!naviClicked) { 
    428                 $("#navi").find('li') 
    429                     .off('mouseenter') 
    430                     .off('mouseleave') 
    431                     .removeClass('sfhover') 
    432                     .removeClass('clicked'); 
     401                $("#navi") 
     402                    .removeClass('active') 
     403                    .find('li') 
     404                        .removeClass('sfhover') 
    433405            } else { 
    434406                naviClicked = false; 
Note: See TracChangeset for help on using the changeset viewer.