Как из подфункции вывести переменную в функцию?

237
28 марта 2018, 04:12

Есть код:

$(document).ready(function () {

var flag = true;                                                            
 $(window).resize(function () {                                             
     if ($(window).width()<748){                                            
        flag=false;                                                         
}                                                                           
    });                                                                     
console.log(flag);                                                          
    if(flag === true) {                                                     
        $(function () {                                                     
            $('nav div>ul>li').hover(function () {                          
                $(this).children('ul').stop(false, true).fadeIn(1000);      
            }, function () {                                                
                $(this).children('ul').stop(false, true).fadeOut(1000);     
            });                                                             
        })                                                                  
    }                                                                       
        else                                                                
            {                                                               
        $(function () {                                                     
         $('nav div>ul>li').click(function() {                              
             $(this).find("ul").stop().slideToggle(300);                    
         });                                                                
        });                                                                 
    }                                                                       
});  

Собственно трабл в том что я не знаю как сделать чтобы flag работал и выводился наружу из функции и становился переменной функции. console.log() всегда выдает true.

Answer 1

Переменную flag надо использовать внутри обработчиков hover и click, а не снаружи.

$(document).ready(function () {
  var flag = true;                                                            
  $(window).resize(function () {                                             
    flag = $(window).width() >= 748;
  });                                                                     
  $('nav div>ul>li').hover(function () {
    if (flag) {
      $(this).children('ul').stop(false, true).fadeIn(1000);
    }
  }, function () {                                                
    if (flag) {
      $(this).children('ul').stop(false, true).fadeOut(1000);
    }
  });                                                             
  $('nav div>ul>li').click(function() {
    if (!flag) {
      $(this).find("ul").stop().slideToggle(300);
    }
  });  
}); 

Или

Подсоединять/отсоединять обработчики hover и click внутри обработчика resize.

READ ALSO
Получить число при помощи AJAX

Получить число при помощи AJAX

Есть скрипт, который должен получить числоЕсть страничка на которой всего одна строка вида {"temperatura":10}

173
Переключение категорий через стрелки в jQuery

Переключение категорий через стрелки в jQuery

Копаюсь в чужом коде, чтобы добавить стрелки (вперед назад) переключение категорий объектовМоя первая идея была, добавление массива из всех...

237
Как сделать &ldquo;уведомление&rdquo; в админ панели Django

Как сделать “уведомление” в админ панели Django

На сайте есть страница с новостями, там же кнопка "Предложить новость", в ней пользователь жмет на кнопку "Отправить" и мне надо так что бы в Admin панели...

182