2012-06-11 56 views
0

我正在通过每个div使用类名称并将html引入键/值对象。我的问题是,要比我现在所做的更进一步,一个大对象不会削减它。我需要将每个5放到一个不同的对象中,或者做一些类似于.slice()的事情,然后再分解它。我迷路了,因为,如果我知道有多少前沿,这很容易做到,但我希望尽可能使其具有动态性。用户可能有27个.example div与我下面的3个。它现在在一个对象中,而不是一个数组,因为键/值对象在dojo图表和我试图做的一些其他事情中更好。作为一个在简化例如:每5个元素创建一个新对象

//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; 
    }); 

在我的脑海里,而不是标题= {},我想每5推入一个单独的对象。

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

没有事先对代码中的数量进行硬编码。 (即我不想说如果(索引> 5)并在代码中指定titles2,用户可能有更多的比这更多,并且硬编码5的倍数,直到我能想到的任意数量的支持看起来效率不高。)

或者使用类似于.slice()的5的倍数的方式。

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

有什么想法?现在

回答

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; 
}); 

,你会得到这样的titles0,titles1,...在window范围的对象。

相关问题