如何将元素的顺序存储到数组中

时间:2012-02-19 21:29:03

标签: javascript jquery arrays store

我想将一些元素存储到数组中,我需要将它作为每个元素的位置。

下面的示例显示了我想要存储的一个简单示例(请注意,每次加载页面时ID都会随之变化)。

我想存储每个box-parent类的位置及其所有子节点(div)

更新:

主要思想是将结构(所有元素的位置)放入数组/字符串中,我认为它叫做序列化。 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 个答案:

答案 0 :(得分:1)

您的结构不能是: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++;
    });
});

答案 1 :(得分:0)

使用getElementsByTag(),计算没有“box-parent”类的元素,并将“position”设置为等于非“box-parent”类元素的数量。

答案 2 :(得分:0)

因此,如果我理解正确,你就会有这样的结构

<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