使用JQuery删除液体创建列表中的重复项

时间:2011-10-25 16:21:46

标签: jquery list duplicates liquid

长时间用户,第一次海报。

基本上,我在不同地点有一系列售货亭并使用“液体”我有一个凭证系统,可自动将所有与一个地点相关的凭证与列表相关联。我也使用此代码在每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 %}

但是,列表中的某些优惠券不止一次出现。这是因为优惠券分为3类,有些可以交叉。由于存在多个位置,因此我无法向凭证添加任何内容,例如密钥或标签,以阻止其显示,因为它可能希望在其他位置显示。另外,每个人都必须手动调整,并且该系统的要点应尽可能自动化。因此,我使用了一些我很满意的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>

从这里可以看出我使用了代码的ID代码,然后jquery删除了任何具有相同id的div。然而,它留下了一个空间,因此有些页面有8而不是10.因此我们得出了我的问题。如何在不留空格的情况下删除液体列表中的重复项?

我试图将“.remove()”更改为“.hide()”但没有用。我把它改成了

.addClass( "duplicate" )

希望在液体中添加一条线来表示类似

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

因此不使用div为“duplicate”的那些。哪个会好的。但是我找不到代码来做甚至知道它是否可行。我试图在这里涵盖所有角度并尽可能地解释一切。我是如此接近,但也许不同的视角会起作用或者是否有更简单的方法?我是否走在正确的轨道上?任何想法都会非常感激。

编辑:这是一张试图进一步解释的图片。 http://img683.imageshack.us/img683/6295/voucherpagehelp.jpg 此外,我添加了一些更多的代码,这些代码是从其他地方提取的,这将有助于解释滚动系统。对不起,以前不清楚。

提前致谢。

2 个答案:

答案 0 :(得分:2)

以下是我在Liquid中删除重复内容的看法:

{% 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: ', ' }}

答案 1 :(得分:0)

如果您打算使用jQuery构建此列表,我会使用液体JSON过滤器将整个凭证对象捕获到JavaScript对象中。但是,我这样做的首选方法是使用Liquid,以便允许没有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 %}