-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

尝试这样的事情:

$(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 回答
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 回答