Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Помогите завис (хранение значения) (https://javascript.ru/forum/jquery/48729-pomogite-zavis-khranenie-znacheniya.html)

cha0s 14.07.2014 20:13

Помогите завис (хранение значения)
 
$(".toggle1").click(function(){
		$flag = 'false';
		if ($('#header').hasClass('navbar-fixed-top')) {	// эта проверка уже беспонтовая после removeClass....		
			$flag = 'true';
		}

		if ($(".toggle1").hasClass("active")) {
                   if (надо вернуть класс обратно если до удаления класс существовал) { // ВОТ С ЭТИМ УСЛОВИЕМ помощь нужна
                       $('header').addClass('navbar-fixed-top');
                   }

		} else {
				if ($flag == 'true') {					
					$('header').removeClass('navbar-fixed-top');
				}
		}
    });


есть такое событие клик(оно открывает модальное окно), до клика я проверяю существования класса(если его нет - то все просто), а если он есть на момент открытого модального окна, мне надо его удалить

$('header').removeClass('navbar-fixed-top');

тоже вроде-бы все понятно все ок, при клике на закрытие модального окна мне надо знать существовал ли этот класс до .removeClass('navbar-fixed-top') , ведь естественно я его удалил и его больше нету, как лучше всего зафиксировать это?

skrudjmakdak 14.07.2014 20:25

вы же сохраняйте в переменную $flag?? или не то?

cha0s 14.07.2014 20:57

Цитата:

Сообщение от skrudjmakdak (Сообщение 321080)
вы же сохраняйте в переменную $flag?? или не то?

когда я нажму снова на .toggle1, то он уже будет false, так как classRemove был.... :) у меня окно закрывается таким-же макаром как и открывается по одному div, надо как-то грамотно положить в переменную

$(".toggle1").click(function(){
        $flag = 'false';
        if ($('#header').hasClass('navbar-fixed-top')) {    // при закрытие он будет false все время так как был removeClass.   
            $flag = 'true';
        }
 
        if ($(".toggle1").hasClass("active")) {
                  $(".toggle1").removeClass('active');
// ЗАКРЫВАЕМ ОКНО, ТАК КАК ОНО БЫЛО ОТКРЫТО, и ТУТ надо узнать был ли класс удалён.
                   if (надо вернуть класс обратно если до удаления класс существовал) {
                       $('header').addClass('navbar-fixed-top');
                   }
 
        } else {
// ОТКРЫВАЕТСЯ ОКНО, класс был удалили его. 1 ШАГ
                $(".toggle1").addClass('active');
                if ($flag == 'true') {                 
                    $('header').removeClass('navbar-fixed-top');
                }
        }
    });

skrudjmakdak 14.07.2014 21:02

ну так сделайте еще одну переменную типа saveflag и записывайте значение в конце функции. только сделайте либо глобальную переменную, чтобы она не удалялась после выполнения функции. или запишите в объект (просто я не знаю вашего алгоритма полностью)

cha0s 14.07.2014 21:16

я побывал типа что-то, но проблемы с пространством имен у меня;> Такой способ мне подойдет только как сделать чтоб flag2 был видимым? ака глобальным? вроде-бы var аббревиатура дает статус переменной как global?

if ($(".toggle1").hasClass("active")) {
				if (window.flag2 == 'true') { // ТУТ НАМ НЕИЗВЕСТНО ЧТО ТАКОЕ FLAG2				
					$('header').addClass('navbar-fixed-top');
				}
		} else {
				if ($flag == 'true') {					
					$('header').removeClass('navbar-fixed-top');
					var flag2 = 'true';  // ДЕЛАЮ 2 ПЕРЕМЕННУЮ
				}

skrudjmakdak 14.07.2014 21:31

можно написать window.flag2 = tra-lala; и использовать как window.flag2 или просто flag2 - это равносильно. при условии что внутри функции не было объявлено переменной с этим же именем..

var просто объявляет переменную, если она была объявлена внутри функции, то она локальная. если она была объявлена вне функции, то глобальная. и тогда для использования внутри функции нет необходимости ее объявлять

cha0s 14.07.2014 21:37

блин работает! спасибо! :)) +++

krasovsky 15.07.2014 09:32

Как вариант - элементу у которого удаляешь класс, присваивать какой ниб аттрибут типо data-removed, element.data('removed',someclass) в каком угодно формате хоть строкой хоть массивом. И при закрытии ворачивать обратно все классы указанные в data-removed


Часовой пояс GMT +3, время: 05:47.