jquery - 寻找相同的内容

时间:2013-02-18 20:41:51

标签: jquery html select addclass

我试图让这个与选择器一起工作,而对于等等,但我并没有接近那个想要的东西。

<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>

2 个答案:

答案 0 :(得分: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 =&#39;相同的&#39;根据时间生成id

小提琴:http://jsfiddle.net/Zt38S/

答案 1 :(得分:0)

首先,不要在几个元素上使用相同的id,id在HTML中必须是唯一的, 而是使用例如class属性。

此代码首先会找到所有唯一的时间,然后将所有时间组包含在div中,类别为“same”。

可在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'));
    });
})();