Как сохранить порядок элементов в массиве - PullRequest
0 голосов
/ 20 февраля 2012

Я хочу сохранить некоторые элементы в массиве, мне нужно это для позиции каждого элемента.

Пример ниже показывает простой пример того, что я хочу сохранить (обратите внимание, что идентификаторы будут меняться с каждымзагрузка страницы).

Я хочу сохранить позицию каждого класса-родителя со всеми его потомками (div)

ОБНОВЛЕНИЕ:

Основная идея - получить структуру (поэтомупозиции всех элементов) в массив / строку, я думаю, что это называется serialize.Классы box-parent являются контейнерами для сортируемых блоков / виджетов (box-1, box-2 и т. Д.). Подобный пример можно найти здесь http://james.padolsey.com/demo/tut-inettuts-with-cookies/

Базовый пример

    <div id="main-wrapper">

        <div class="box-parent">
            <div id="box-1"> content here </div>
            <div id="box-2"> content here </div>
            <div id="box-3"> content here </div>
            <div id="box-4"> content here </div>
            <div id="box-5"> content here </div>
        </div>

        <div class="box-parent">
            <div id="box-6"> content here </div>
            <div id="box-7"> content here </div>
            <div id="box-8"> content here </div>
            <div id="box-9"> content here </div>
            <div id="box-10"> content here </div>
        </div>  

        <div class="box-parent">
            <div id="box-11"> content here </div>
            <div id="box-12"> content here </div>
            <div id="box-13"> content here </div>
            <div id="box-14"> content here </div>
            <div id="box-15"> content here </div>
        </div> 

    </div>    

Ответы [ 3 ]

1 голос
/ 20 февраля 2012

Ваша структура не может быть: object['box-parent'] не может ссылаться на 2 разных значения.

Вы можете получить позицию различными способами. Предполагая, что каждый .box-parent имеет 5 элементов, вы можете применить следующий расчет:

var elem; // given that elem refers to a "box-X", for instance $('#box-4'):
elem.prevAll().length + elem.parent().prevAll('.box-parent').length*5

Вы также можете перечислить более .box-parent с помощью внешнего счетчика и поместить позиции в структуру:

var i=0;
$('.box-parent').each(function() {
    $(this).children().each(function() {
        // i = the position
        // ...            

        i++;
    });
});
0 голосов
/ 20 февраля 2012

Так что, если я правильно понимаю, у вас есть такая структура

<container>
    <element class="parent">
        <!-- Content #1 -->
    </element>
    <element class="parent">
        <!-- Content #2 -->
    </element>
    <element class="parent">
        <!-- Content #3 -->
</container>

, и вы определяете, что элемент с содержимым # 1 является первым элементом, и он увеличивается вниз, и вы хотите сохранитьпорядок.

Я предполагаю, что JQuery является приемлемым;если это не так, дайте мне знать

// Something like this should work
$("container").children(".parent")
// [Element, Element, Element]

Jsfiddle

0 голосов
/ 20 февраля 2012

Используйте getElementsByTag (), подсчитайте элементы, у которых нет класса «box-parent», и установите «position» равным количеству элементов класса «не box-parent».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...