我有以下javascript,我用于移动菜单,该工作正常,但是当点击具有另一个子菜单的子菜单项时,它不仅关闭该子菜单,而且还关闭父子菜单。希望有道理。关于如何让它关闭子菜单而不是父子菜单的任何想法?
jQuery('.mobile-menu .sub-menu').hide();
jQuery(document).ready(function () {
jQuery('.mobile-menu .sub-menu').parent().find('a:first').removeAttr('href').css('cursor','default');
if (jQuery('.mobile-menu .menu-item-has-children').length > 0) {
jQuery('.mobile-menu .menu-item-has-children').click(
function (event) {
jQuery(this).addClass('toggled')
if (jQuery(this).hasClass('toggled')) {
jQuery(this).children('ul').toggle();
}
});
}
});
答案 0 :(得分:1)
我猜从这里开始,你需要event.stopPropagation()
,如:
jQuery('.mobile-menu .sub-menu').hide();
jQuery(document).ready(function () {
jQuery('.mobile-menu .sub-menu').parent().find('a:first').removeAttr('href').css('cursor','default');
if (jQuery('.mobile-menu .menu-item-has-children').length > 0) {
jQuery('.mobile-menu .menu-item-has-children').click(
function (event) {
event.stopPropagation();
jQuery(this).addClass('toggled')
if (jQuery(this).hasClass('toggled')) {
jQuery(this).children('ul').toggle();
}
});
}
});
*更新* 我想这对我来说是其中的一天。在我回答之后(并且感谢积分,顺便说一下),在我的脑海里,我记得有一些建议可以阻止传播,但是在使用它时你应该小心。我花了一些时间让Google-fu重新解决问题所在。它在this article中说得很清楚,但是TL; DR可能会产生意想不到的副作用。 This entry at jQuery Fundamentals还有其他一些想法。如果它为你工作,太棒了,但是为了以防万一,你可能想把它放在脑后。