0

クラス名を使用して各divを調べ、htmlをkey/valueオブジェクトにスローします。私の問題は、私が今持っているものよりも先に進むために、1つの大きなオブジェクトがそれをカットしないということです。5つごとに別のオブジェクトに入れるか、.slice()のようなことをして後で分解する必要があります。事前にいくつ知っていれば簡単にできるので、できるだけダイナミックにしたいと思っているので迷いました。ユーザーは27の.exampledivと、以下の3つのdivを持っている可能性があります。キー/値オブジェクトは道場チャートや私がやろうとしている他のいくつかのことでよりうまく機能するので、それは現在オブジェクトにあり、配列ではありません。過度に単純化された例として:

    //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の倍数をサポートすると考えられる任意の数までハードコーディングします。非常に効率的だと思われます。)

または、.slice()のように5の倍数を使用する方法。

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

これで、titles0、titles1 などのオブジェクトがスコープに取得されますwindow

于 2012-06-11T23:23:26.280 に答える