2013-05-04 2 views
0

Я пытаюсь запомнить открытые аккордеоны в пользовательском плагине. Первый аккордеон открыт по умолчанию, так:Добавление/удаление свойств объекта и удаление null

var active = [0]; 

я нажимаю на аккордеоне, а затем читать localStorage получить значение. Внутри моей мыши событие:

var active = JSON.parse(localStorage.getItem(outerName)), 
    tab = $(this).find('h3').index(ui.tab[0]); 

if (tab in active) { 
    delete active[tab]; 
} else { 
    active[tab] = tab; 
} 
for (var i = 0; i < this.length; i++) { 
    if (active[i] == null) { 
     active.splice(i, 1); 
     i--; 
    } 
} 
localStorage.setItem(outerName, JSON.stringify(active)); 

Это работает, за исключением того, где я удалить первый аккордеон, а затем нажмите на второй, и я получу дублированные значения [1,1]. Я каждый раз удалял нулевые значения, поэтому это причина, но я не знаю, как правильно получить значения, чтобы, если я переключу аккордеон, он будет удален из объекта.

[0,3] = Аккордеон 1 и 4 открыт

[0,1] = Аккордеон 1 и 2 открыт

+1

не было бы проще использовать массив с одной записью для каждого аккордеона, а их значения равны true/false? – zeroflagL

+0

Существует большое количество аккордеонов. Во всяком случае я заплатил мой плагин и проверил на нуль, чтобы заменить значения. Я отвечу на свой вопрос сейчас * вздох! * – stabbie

+0

размер массива тоже переменный;) – zeroflagL

ответ

0

Ok, так что я пропатчен мой плагин только получить номера из активных строк, но я также изменил мой объект потому что она была сломана:

if (tab in active && active[tab] !== null) { 
    delete active[tab]; 
} else { 
    active[tab] = tab; 
} 

я получал [нуль, 1, NULL], так что теперь я перезаписать нуль и просто заменить его со значением [0,1, NULL] и только 0 и 1 для чтения по плагину.

SO отвечает на мои вопросы так быстро!

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