私はJQuery(C#)の新機能で、ここで間違っていることを見ることはできません。リファクタリング後にJQuery関数が正しく機能しない
私はハンバーガーメニューを切り替える次のJQueryを持っています。また、調子の効き目を入れて、Bodyへのスクロールを防ぎます。ハンバーガーは3本の水平線からXまでアニメートします。最初のJQuery(下)ではこれがうまくいきます。しかし、私はこれを洗練して、私のコードを2番目のJQueryにクリーンアップしようとしています。しかし、私がこれを行うと、ハンバーガーから離れて意図したように動作し、Xにはもはやアニメーション化されません。なぜなら、私の初心者のJQueryの目には、
また、私はまた、次のコード2行をしても、このような機能で必要とされるかどうかを知るのが大好きだ初心者のように:
e.preventDefault();
event.stopPropagation();
jQueryの(作品):
jQuery(document).ready(function() {
jQuery('#toggle-nav').click(function (e) {
event.stopPropagation();
jQuery(this).toggleClass('active');
jQuery('.menu ul').toggleClass('active');
jQuery('.hamburger ul').toggleClass('active');
jQuery('.dimmer').toggleClass('active');
jQuery('body').toggleClass('no-scrolling');
e.preventDefault();
});
});
はJQuery (動作しない):
jQuery(document).ready(function() {
jQuery('#toggle-nav').click(function(e) {
toggleNav();
function toggleNav() {
event.stopPropagation();
jQuery(this).toggleClass('active');
jQuery('.menu ul').toggleClass('active');
jQuery('.hamburger ul').toggleClass('active');
jQuery('.dimmer').toggleClass('active');
jQuery('body').toggleClass('no-scrolling');
e.preventDefault();
}
});
});
あなたは 'event.stopPropagation()'を使用すべきではありません。 'e.stopPropagation()'でなければなりません。また、イベントハンドラ自体で定義されている新しい関数にコードを移動すると、その関数がクリックするたびにその関数が再定義されるため、愚かなように見えます。 –
答えがありがとうございました。私がやっていたこと。 – Damo