0

我正在使用类名遍历每个 div 并将 html 放入键/值对象中。我的问题是,要比我现在拥有的更进一步,一个大物体不会切割它。我需要将每 5 个放入一个不同的对象中,或者执行类似于 .slice() 的操作以在之后将其分解。我迷路了,因为如果我知道有多少前期,这将很容易做到,我想让它尽可能动态。一个用户可能有 27 个 .example div,而我在下面有 3 个。它现在在一个对象中,而不是一个数组中,因为键/值对象在 dojo 图表和其他一些我正在尝试做的事情中表现得更好。作为一个过于简化的例子:

    //HTML
    <div class="example">
        <div class="title"></div>
        <div class="definition"></div>
    </div>
    <div class="example">
        <div class="title"></div>
        <div class="definition"></div>
    </div>
    <div class="example">
        <div class="title"></div>
        <div class="definition"></div>
    </div>

    //JS
    var titles = {};
    $('.example').each(function(index) {    
        var exampleTitle = $(this).find('.title').html();
        var exampleDef = $(this).find('.definition').html();
        titles[exampleTitle] = exampleDef;
    });

在我看来,而不是titles = {},我想将每5个推入一个单独的对象。

    //...
    titles2= {}; 
    titles3={};
    etc

无需事先在代码中硬编码数量。

(即我不想说 if(index>5) 并在代码中指定titles2,用户可能有更多,并且将5的倍数硬编码到我能想到支持的任意数字不t 似乎非常有效。)

或者一种使用 5 的倍数的方法,类似于 .slice()。

titles.slice(0,5); //obviously does not work on objects, just as an example

有什么想法吗?

4

1 回答 1

2
$('.example').each(function(index) {    
    var exampleTitle = $(this).find('.title').html();
    var exampleDef = $(this).find('.definition').html();
    var titles;
    if (! window['titles' + (index / 5)]) {
         titles = window['titles' + (index / 5)] = {};
    }
    titles[exampleTitle] = exampleDef;
});

window现在您将在范围内获得诸如titles0、titles1、...之类的对象。

于 2012-06-11T23:23:26.280 回答