2016-05-31 1 views
1

Это то, что я пытаюсь сделать:JQuery: Toggle Тяни/сращивание в пределах массива

У меня есть список дивы с тем же классом, каждый раз, когда я нажимаю на одном из дивы я хотел бы хранить ID соответствующего DIV в массиве, что-то вроде:

var array = []; 

[CODE] 

$("divID").on("click", function(){ 

    array.push($(this).attr("id")); 

[CODE] 

}); 

То, что я хочу сделать то, что любой другой щелчок на тот же сОн толчок/сращивания соответствующего идентификатора в массиве. Переключение push/splice по ID Я думаю ...

Нажатие идентификаторов div внутри массива не является проблемой, однако удаление их кажется немного более проблематичным, поскольку я могу только очистить полный массив.

Как мне пройти цикл через массив, чтобы найти соответствующий идентификатор и переключить его на клик?

Спасибо!

+1

Проще простого подхода было бы добавить '{ID: 'on'}' при нажатии, а затем обновить идентификатор и установить «выключено» при повторном нажатии. Таким образом, вам не нужно удалять какие-либо элементы из массива - просто обновите его статус. –

+0

Благодарим за быстрый ответ! Этот подход работает! – derp

ответ

1

Как указано в моем комментарии к OP, более простым подходом было бы использовать Hash вместо простого массива. При этом вы можете добавить {ID: 'on'} при нажатии, а затем обновить идентификатор и установить «выключено» при повторном нажатии. Таким образом, вам не нужно удалять какие-либо элементы из массива - просто обновите его статус.

Например:

var hash = {}; 

$("divID").on("click", function(){ 
    var id = $(this).attr("id"); 

    // Turns it on 
    hash[id] = 'on';    // 'on' or true 

    // Alternatively, turn it off 
    hash[id] = 'off';    // 'off' or false 

    // You can also check its status 
    // if (hash[id] == 'on')... 
}); 
0

UPDATE: относительно оригинального подхода:

Я нашел ответ на оригинальный подход добавления/удаления значения массива здесь (Reference):

http://www.thoughtdelimited.org/thoughts/post.cfm/jquery-tip-finding-adding-and-removing-values-from-arrays#respond

И это код:

var index= jQuery.inArray(theValue, theArray); 

//If you're not using any other Javascript library that utilizes the $ sign, you can use the $ sign 
//instead of the jQuery namespace 

var index= $.inArray(theValue, theArray); 
if(index== -1) 
    { 
    //Value not found in the array. Add to the end of the array with push(); 
    theArray.push(theValue); 
    } 
else 
    { 

    //Remove from the array using splice(). Splice takes the index value of where you want to start 
    //removing items from the array as the first parameter, and then the number of item you want 
    //to remove as the second parameter. 

    theArray.splice(index,1); 

    } 

Работал также для меня, я надеюсь, что это поможет другим.

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