Jquery If / Else语句停止防止默认

时间:2015-07-14 00:08:24

标签: javascript jquery

我有一些大型导航的代码,我需要它悬停在桌面上放下菜单,然后点击移动设备上的菜单。

以下是我遇到问题的代码片段:



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工作的任何想法?

提前致谢!

2 个答案:

答案 0 :(得分:2)

if( $('.js-full-menu').hasClass('js-touch-menu') )

应该是

.

您忘记了班级选择器中的Tile

答案 1 :(得分:-1)

我可能错了,但试着把

if not root.fileName:
    ...

而不是

function(event)

前几天在FF解决了我的问题。