我是JQuery(更多C#)的新手,無法看到我在這裏做錯了什麼。重構後JQuery函數無法正常工作
我有下面的JQuery,它可以切換漢堡包菜單,並且還可以調節調光效果並防止滾動到正文。漢堡包也從3條水平線移動到X.在第一個JQuery(如下)中,這工作正常。不過,我一直在試圖改進這一點,並清理我的代碼到下面的第二個JQuery,這對我來說看起來更清晰(銘記未來的功能)。然而,當我這樣做時,除了漢堡包之外,所有東西仍然按照預期工作,不再爲X創作動畫。無論如何,我真的不明白爲什麼沒有真正明顯的區別。
另外,作爲一個新手,我也很想知道,即使是需要這樣的功能的代碼如下兩行:
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