我有一些大型导航的代码,我需要它悬停在桌面上放下菜单,然后点击移动设备上的菜单。
以下是我遇到问题的代码片段:
if( $('js-full-menu').hasClass('js-touch-menu') ) {
(function(megaNavTray){
menu.on('click', function(e){
e.preventDefault();
var wasOpen = megaNavTray.hasClass('is-active');
megaNavTrays.find('.js-mega-nav-tray').removeClass('is-active');
if(!wasOpen) {
megaNavTray.addClass('is-active');
megaNavTrays.addClass('is-active');
} else {
megaNavTrays.removeClass('is-active');
}
});
})(megaNavTray);
} else {
(function(megaNavTray){
menu.hoverIntent( function(){
megaNavTray.addClass('is-active');
megaNavTrays.addClass('is-active');
var wasOpen = megaNavTray.hasClass('is-active');
megaNavTrays.find('.js-mega-nav-tray').removeClass('is-active');
if(wasOpen) {
megaNavTray.addClass('is-active');
megaNavTrays.addClass('is-active');
} else {
megaNavTray.removeClass('is-active');
}
});
})(megaNavTray);
var fullNav = $('.js-full-menu');
fullNav.hoverIntent( function() {}, function() {
$('.js-mega-nav-tray').removeClass('is-active');
megaNavTrays.removeClass('is-active');
});
}

基本上问题是删除了if else语句只留下以下代码,preventdefault工作正常。使用链接上方的完整代码直接指向他们的页面,而不是在点击时删除meganav。
(function(megaNavTray){
menu.on('click', function(e){
e.preventDefault();
var wasOpen = megaNavTray.hasClass('is-active');
megaNavTrays.find('.js-mega-nav-tray').removeClass('is-active');
if(!wasOpen) {
megaNavTray.addClass('is-active');
megaNavTrays.addClass('is-active');
} else {
megaNavTrays.removeClass('is-active');
}
});
})(megaNavTray);

为什么if / else会阻止preventdefault工作的任何想法?
提前致谢!
答案 0 :(得分:2)
if( $('.js-full-menu').hasClass('js-touch-menu') )
应该是
.
您忘记了班级选择器中的Tile
。
答案 1 :(得分:-1)
我可能错了,但试着把
if not root.fileName:
...
而不是
function(event)
前几天在FF解决了我的问题。