2016-09-13 7 views
0

私がクリックすると、ページの/#0が開いていることを示すメニューが表示されます。どうすればいいのかは、これを表示しないようにするか、メニュー。メニューのURLの状態の保存を停止するにはどうすればよいですか?

<header class="cd-header"> 
    <a href="#0" class="cd-3d-nav-trigger"> 
     Menu 
     <span></span> 
    </a> 
</header> 

そして、私の完全なjavascriptのファイルは、ここで事前に

jQuery(document).ready(function($){ 
    //toggle 3d navigation 
    $('.cd-3d-nav-trigger').on('click', function(){ 
     toggle3dBlock(!$('.cd-header').hasClass('nav-is-visible')); 
    }); 

    //select a new item from the 3d navigation 
    $('.cd-3d-nav').on('click', 'a', function(){ 
     var selected = $(this); 
     selected.parent('li').addClass('cd-selected').siblings('li').removeClass('cd-selected'); 
     updateSelectedNav('close'); 
    }); 

    $(window).on('resize', function(){ 
     window.requestAnimationFrame(updateSelectedNav); 
    }); 

    function toggle3dBlock(addOrRemove) { 
     if(typeof(addOrRemove)==='undefined') addOrRemove = true; 
     $('.cd-header').toggleClass('nav-is-visible', addOrRemove); 
     $('.cd-3d-nav-container').toggleClass('nav-is-visible', addOrRemove); 
     $('main').toggleClass('nav-is-visible', addOrRemove).one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(){ 
      //fix marker position when opening the menu (after a window resize) 
      addOrRemove && updateSelectedNav(); 
     }); 
    } 

    //this function update the .cd-marker position 
    function updateSelectedNav(type) { 
     var selectedItem = $('.cd-selected'), 
      selectedItemPosition = selectedItem.index() + 1, 
      leftPosition = selectedItem.offset().left, 
      backgroundColor = selectedItem.data('color'), 
      marker = $('.cd-marker'); 

     marker.removeClassPrefix('color').addClass('color-'+ selectedItemPosition).css({ 
      'left': leftPosition, 
     }); 
     if(type == 'close') { 
      marker.one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(){ 
       toggle3dBlock(false); 
      }); 
     } 
    } 

    $.fn.removeClassPrefix = function(prefix) { 
     this.each(function(i, el) { 
      var classes = el.className.split(" ").filter(function(c) { 
       return c.lastIndexOf(prefix, 0) !== 0; 
      }); 
      el.className = $.trim(classes.join(" ")); 
     }); 
     return this; 
    }; 
}); 

感謝を見つけることができます:ここでは、メニューのトリガーHTMLです。

+0

あなたの '.cd-3d-nav-trigger'クリックハンドラで、デフォルトアクションが発生しないように' false'を返します。 – Phil

+0

@Philありがとう、簡単な修正ですが、完全に完全に動作します。乾杯! –

答えて

0

上記のコメントを展開すると、デフォルトのアクションが発生しないようにする必要があります。

$('.cd-3d-nav-trigger').on('click', function(e){ 
    e.preventDefault(); 

    toggle3dBlock(!$('.cd-header').hasClass('nav-is-visible')); 
}); 

あなたはできるもreturn false親要素にイベントのデフォルトアクション停止の伝播を防ぐことができますクリックハンドラから。

+0

@Philありがとうございました。戻り値falseを追加するだけで問題なく動作しました。ありがとうございました! –

0

アンカータグの悪用と思われますが、残しておきたい場合はhref="#0"を削除してください。これは何かのために使用していて、clickイベントとルーティングを処理する要素を使用しているようです。

関連する問題