-1

これをセレクター、while、forなどで機能させようとしましたが、必要なものに近づいていません。

<div class="product">
<div class="id">569865974598</div>
<div class="name">Ati Radeon Sapphire Hd 6850</div>
<div class="time">2013-02-14 03:13:33</div>
</div>

<div class="product">
<div class="id">654654654987</div>
<div class="name">Nvidia Geforce 9500gt</div>
<div class="time">2013-02-14 00:36:13</div>
</div>

<div class="product">
<div class="id">2561564898789</div>
<div class="name">Ati Radeon Sapphire Hd 6850</div>
<div class="time">2013-02-14 00:36:13</div>
</div>

予想される(同時刻の製品をカプセル化する)

<div id="same">
    <div class="product">
    <div class="id">569865974598</div>
    <div class="name">Ati Radeon Sapphire Hd 6850</div>
    <div class="time">2013-02-14 03:13:33</div>
    </div>
</div>
<div id="same">
    <div class="product">
    <div class="id">654654654987</div>
    <div class="name">Nvidia Geforce 9500gt</div>
    <div class="time">2013-02-14 00:36:13</div>
    </div>

    <div class="product">
    <div class="id">2561564898789</div>
    <div class="name">Ati Radeon Sapphire Hd 6850</div>
    <div class="time">2013-02-14 00:36:13</div>
    </div>
</div>
4

2 に答える 2

0

まず、複数の要素で同じ ID を使用しないでください。ID は HTML 内で一意である必要があり、代わりに class 属性などを使用してください。

このコードは、最初にすべての一意の時間を見つけてから、すべての時間グループを「同じ」クラスの div でラップします。

jsfiddle で利用可能: http://jsfiddle.net/RA9eb/

(function () {
    var uniqueTimes = $.unique($('.product').map(function() {
        return $(this).find('.time').text();
    })).get();

    $.each(uniqueTimes, function (i, time) {
        $('.product').filter(function () {
            return $(this).find('.time').text() == time;
        }).wrapAll($('<div />').addClass('same'));
    });
})();
于 2013-02-18T21:27:45.143 に答える
0

次のようなことを試してください:

$(document).ready(function(){

    $('.product').each(function(){
        // generate div id based on time e.g. 2013-02-14 00:36:13 -> id=20130214003613
        var id = $(this).find('.time').html().replace(/[\s-:]/g,"");

        var sameElement = $('#' + id);

        if(sameElement.length == 0){
            $('body').append('<div id=' + id + '></div>');
            sameElement = $('#' + id);
        }
        $(this).appendTo(sameElement);
    });

});

注: 同じ ID を持つ複数の div 要素を持つことは正しくありません。これが、id='same' が提案する代わりに、時間に基づいて ID が生成される理由です。

フィドル: http://jsfiddle.net/Zt38S/

于 2013-02-18T21:13:35.960 に答える