2011-10-25 96 views
4

長時間用戶,第一次張貼海報。使用JQuery刪除液體創建列表中的重複項

基本上,我有一系列在不同位置的自助服務終端,並使用「液體」我有一個憑證系統,可以自動將與位置相關的所有憑證放入列表中。我還使用此代碼在每10個條目之後開始一個新列表。然後用jQuery,我添加了滾動條來在列表之間滑動。代碼是非常簡單的:

{% for voucher in vouchers %} 
{% capture modulus %}{{ forloop.index0 | mod:10 }}{% endcapture %} 
{% if forloop.index0 != 0 %} 
{% if modulus == "0" %} 
</ul></li><li><ul class="voucherlist"> 
{% endif %} 
{% endif %} 
<div id="{{ voucher.meta }}" class="voucher_list"> 
    <li><a href="{{ 'voucher' | url_for_page : voucher.id }}">{{ voucher.meta }}</a></li> 
</div> 
{% endfor %} 

但是,列表中的一些代金券不止一次出現。這是因爲優惠券分爲三類,有些可以跨越。由於存在多個地點,我無法在憑證上添加任何內容(例如,按鍵或標籤),以阻止其顯示,因爲它可能需要在其他地點顯示。另外,每個人都必須手動調整,並且該系統的要點儘可能地自動化。因此,我使用了一些我非常滿意的jQuery。

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('[id]').each(function() { 
      var ids = $('[id=' + this.id + ']'); 
      if (ids.length > 1 && ids[0] == this) { 
       $(ids[1]).remove() 
      } 
     }); 
    }); 
</script> 

從這裏就可以告訴大家,我的DIV ID使用的憑證名稱,然後jQuery的刪除具有相同ID的div的。然而,它留下了一個空間,因此一些頁面有8個,而不是10個。因此我們得出了我的問題。如何在不留任何空格的情況下刪除液體列表中的重複項?

我試圖將「.remove()」更改爲「.hide()」,但沒有用。我把它改成

.addClass("duplicate")

在隨後加入一行在液體像

{% if div.class != "duplicate" %} 

因此不使用那些具有的「複製」一個DIV說希望。這將是很好的。但是我找不到執行它的代碼,甚至不知道它是否可能。我試圖覆蓋這裏的所有角度,並盡我所能地解釋一切。我如此親密,但也許有不同的觀點會奏效,還是有更簡單的方法?我是否在正確的軌道上?任何想法將非常感激。

編輯:這是一個圖像,試圖進一步解釋這一點。 http://img683.imageshack.us/img683/6295/voucherpagehelp.jpg 此外,我添加了更多的代碼,這是從別的地方拉出來,這將有助於解釋滾動系統。對不起,這是不明確的。

在此先感謝。

+0

這個例子工程http://jsfiddle.net/D3cdW/1/有沒有錯誤? – Jack

+0

很好的例子,但他們刪除點擊,如果我刪除了「點擊」功能,我只剩下我以前試過的.remove()。如果有液體功能說「如果div id/class等於???」那麼我會被設置,但我無法找到一個,因此可能需要看看一個全新的戰略,這讓我難倒了。不管怎麼說,還是要謝謝你。 –

+0

我只是不理解爲什麼在從DOM中刪除div之後有空的空間。 – Jack

回答

0

如果您打算使用jQuery構建此列表,我會使用液體JSON過濾器將整個憑證對象捕獲到JavaScript對象中。但是我要做到這一點首選方法是用液體,從而使瀏覽器沒有JavaScript看到正確的內容:

{% assign UsedIDs = '' %} 
{% assign Counter = 0 %} 
{% for voucher in vouchers %} 
{% capture IDToCheck %},{{voucherID}},{% endcapture %} 
{% unless UsedIDs contains IDToCheck %} 
{% capture modulus %}{{ Counter | mod:10 }}{% endcapture %} 
{% if Counter != 0 %} 
{% if modulus == "0" %} 
</ul></li><li><ul class="voucherlist"> 
{% endif %} 
{% endif %} 
<div id="{{ voucher.meta }}" class="voucher_list"> 
    <li><a href="{{ 'voucher' | url_for_page : voucher.id }}">{{ voucher.meta }}</a></li> 
</div> 
{% capture UsedIDs %}{{ UsedIDs }}{{ IDToCheck }}{% endcapture %} 
{% capture Counter %}{{ Counter | plus: 1 }}{% endcapture %} 
{% endunless %} 
{% endfor %} 
2

這裏是我採取在液體中去除重複:

{% assign array = 'c|c|b|b|a|a' | split: '|' %} 
{% assign result = array[1] %} 

{% for item in array %} 
    {% unless result contains item %} 
     {% capture result %}{{ result }}|{{ item }}{% endcapture %} 
    {% endunless %} 
{% endfor %} 

{{ result | split: '|' | sort | join: ', ' }}