2016-08-14 3 views
0

私はそのパネルのリンクをクリックしてオフキャンバスナビゲーションパネルを閉じようとしています。ハンバーガーボタンでパネルを開閉することができ、ページのどこかをクリックすると閉じます。e.preventDefault()を使用しています。

参照してください:http://whyyouthinking.com/xindex.html#what

私はそれが働いていたポイントに得たが、ハンバーガーは再び動作するように二回クリックする必要がありました。私はそのラウンド持って

$(document).ready(function() { 
    "use strict"; 
    $('.panel ul li a').on("click", function() { 
    $('.menu-link').removeClass("active"); 
    $('.panel').animate({left: '-=250'}); 
    }); 
}); 

$(document).ready(function() { 
    "use strict"; 
    $('.panel ul li a').on("click", function() { 
     $('.menu-link').removeClass("active"); 
     $('.panel').animate({left: '-=250'}); 
    }); 
    $('.panel ul li a').on('click', function(e) { 
     e.preventDefault(); 
     $('.menu-link').click();   
    }); 
    }); 

今、私はe.preventDefault()問題を抱えています。また、パネル内のリンクをクリックすると、「スクロール」機能が停止します。 .menu-linkをターゲットにする方法はありますか?

+2

を、あなたはそれが二回クリックする必要がある理由* *把握する必要があり、かつクリックをトリガーするだけではなく、修正してください。 – adeneo

答えて

0

ここでもスクロールして "#menu"セレクタに登録していますので、ユーザーがパネルリストのアンカータグをクリックしたときに、ターゲットオフセットへのスクロールと#menuターゲットオフセットが$( 'リンク ')。クリック();

ページスクロールアニメーションを#menuセレクタに制限します。 #メニューセレクタの条件付きチェックが追加されました:if(target.selector != "#menu" && target.length)

/*Scroll to function*/ 
$(function() { 
    "use strict"; 
    $('a[href*="#"]:not([href="#"])').click(function() { 
     if (location.pathname.replace(/^\//, '') === this.pathname.replace(/^\//, '') && location.hostname === this.hostname) { 
      var target = $(this.hash); 
      target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); 
      if (target.selector != "#menu" && target.length) { 
       $('html, body').animate({ 
        scrollTop: target.offset().top - 60 
       }, 1000); 
       return false; 
      } 
     } 
    }); 
}); 

あなたは#menuセレクタのためのイベントの登録を解除する場合には、このチェック、いいだろう:あなたは間違ってそれをやっている$('a[href*="#"]:not([href="#"]):not([href="#menu"])').click(function(e) {...}

+0

ありがとうございました、地獄に希望はありませんでした。良い経験は、経験豊富なプログラマーが私のことを私に見せてくれることをいつも学んでいることです。 –

+0

私はうれしいです、私は助けてくれました。 – nseepana

関連する問題