2016-06-09 4 views
0

$(window).width(); функция работает хорошо без использования "use strict" режим. но это не работа. после использования "use strict" режим.

что здесь не так?

(function($) { 
    "use strict"; 

    $('#menu .nav > li').on("mouseover", function() { 
     $screensize = $(window).width(); 
     if ($screensize > 991) { 
      $(this).find('> .dropdown-menu').stop(true, true).slideDown('fast'); 
     } 
     $(this).bind('mouseleave', function() { 
      $screensize = $(window).width(); 
      if ($screensize > 991) { 
       $(this).find('> .dropdown-menu').stop(true, true).css('display', 'none'); 
      } 
     }); 
    }); 

})(jQuery); 
+1

Я думаю, что проблема не в '$ (window) .width()'. Проблема, вероятно, '$ screensize', которая не объявляется как var. –

+1

Что здесь означает «не работает»? вы получаете сообщение об ошибке? Я подозреваю, что отсутствие ключевого слова 'var' перед объявлением' $ screensize' – Pabs123

+1

Я из-за строгого режима вы пытаетесь инициализировать var '$ screensize' внутри вашей функции (это считается плохой практикой, но если вы не используете строгий режим, javascript не заботится об этом и определяет новый глобальный var), но, используя строгий режим, это вызовет ошибку, и поэтому ваш javascript не будет работать. Источник: http://www.w3schools.com/js/js_strict.asp –

ответ

2

Если вы используете строгий режим, Вы должны убедиться, что вы объявляете $screensize используя var ключевое слово или он скажет вам, что это неопределенная переменная. Это, скорее всего, остановить выполнение вашего кода

From the documentation

Во-первых, строгий режим делает невозможным случайно создать глобальные переменные . При нормальном обращении с ошибкой JavaScript переменная в задании создает новое свойство на глобальном объекте и продолжает «работать» (хотя возможный сбой в будущем возможен, скорее всего, в современном JavaScript). Задания, которые бы случайно создать глобальные переменные вместо бросок в строгом режиме

Я предлагаю вам использовать консольный отладчик вашего браузера и ознакомиться с ним. он должен метать Uncaught ReferenceError: $screensize is not defined

+0

@HarnishDesign это ваша проблема, так же как и мой комментарий. –

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