我是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