2017-01-23 2 views
-1

У меня есть следующий кусок jquery, который слайды открывают подменю при нажатии на родительский элемент. Он отлично работает на хроме, но на firefox подменю не открывается. Есть идеи ?jQuery подменю не открывается в firefox

(function($) { 
"use strict"; 

    $('.menu-area ul li').on('click', function() { 

if($(this).closest("li").children("ul").length) { 
    event.preventDefault(); 
    $(this).children('ul').slideToggle(300); 
} 
else{ 
    event.preventDefault(); 
    $('.screen-washer').removeClass("right"); 
    //$('.screen-washer').addClass("left"); 

    //console.log($('a').attr('href')); 
    var linkLocation = $(this).children('a:first').attr('href'); 
     //alert(linkLocation); 
     if (linkLocation.indexOf('#') >= 0) {} else { 
      setTimeout(function() { 
       //$('.preloader').fadeIn(300); 
       window.location = linkLocation; 
      }, 500); 
     } 

} 
    }); 

})(jQuery); 
+1

Привет @Scott, вы можете поделиться HTML тоже? –

ответ

1

В обработчике событий - функция() - «событие» отсутствует, поэтому Mozilla останавливается с ошибкой, когда она достигает, не доступную переменную на разборе.

Должно быть:

$('.menu-area ul li').on('click', function(event) {...} 
+0

Более конкретно, вполне законно использовать только 'function()', но вы ссылаетесь на 'событие' в функции (' event. PreventDefault() '), поэтому вам нужно будет включить его. –

+0

Да, Mozilla пишет ReferenceError, когда встречает preventDefault, в то время как Chrome ничего не говорит. –

+0

Yup, Chrome «полезно» предопределяет переменную _event_ для вас. Если бы это было вызвано чем-то другим, скажем 'ev' или' e', это тоже не сработало бы в Chrome. –

Смежные вопросы