2013-02-18 56 views
-1

我試圖讓這與選擇器,雖然,等,但我沒有越來越接近,在什麼想要的。jquery - 尋找相同的內容

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

ID選擇用於指定一個樣式的單一的,獨特的元件。這允許您爲許多具有相同類的HTML元素設置特定樣式。 – 2013-02-18 20:43:38

+1

可以肯定的是,您有第一個HTML代碼,並且您想將其排序爲第二個HTML代碼?或者第一個HTML代碼是您正在生成的內容,而不是您想要的內容? – sdespont 2013-02-18 20:45:12

+0

你怎麼生成你的HTML? – Miguelo 2013-02-18 20:48:03

回答

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

fiddl e:http://jsfiddle.net/Zt38S/

+0

是的,這是忍者技巧,有一個問題,因爲這個數據是通過ajax(json)生成的,所以我使用了ajaxComplete()。現在我可以繼續致謝了! – efex 2013-02-19 01:45:30

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