Удаление дубликатов в созданном списке с помощью JQuery - PullRequest
4 голосов
/ 25 октября 2011

Долгое время, первый постер.

По сути, у меня есть ряд киосков в разных местах, и, используя «жидкость», у меня есть система ваучеров, которая автоматически помещает все ваучеры, связанные с местоположением, всписок.Я также использую этот код, чтобы начать новый список после каждых 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>

Из этого вы можете сказать, что я использовал имя ваучера для идентификатора div, а затем jquery удаляет все div с таким же идентификатором.Тем не менее, он оставляет место, где он был, и поэтому некоторые страницы имеют 8 вместо 10. Таким образом, мы подходим к моему вопросу.Как удалить дубликаты в списке жидкостей, не оставляя пробелов?

Я пытался изменить ".remove ()" на ".hide ()", но безрезультатно.Я изменил его на

.addClass( "duplicate" )

В надежде затем добавить строку в жидкости, чтобы сказать что-то вроде

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

Поэтому не использовать тех с div«дубликат».Что было бы хорошо.Но я не могу найти код для этого или даже знаю, возможно ли это.Я попытался охватить все углы здесь и объяснить все как можно лучше.Я так близок, но, возможно, подойдет другая точка зрения, или есть более простой способ?Я даже на правильном пути?Любые идеи будут очень признательны.

Редактировать: Вот изображение, чтобы попытаться объяснить это дальше.http://img683.imageshack.us/img683/6295/voucherpagehelp.jpg Кроме того, я добавил немного больше кода, который был извлечен откуда-то еще, что поможет объяснить систему прокрутки.Извините, это не было ясно прежде.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 04 марта 2014

Вот мой взгляд на удаление дубликатов в жидкости:

{% 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: ', ' }}
0 голосов
/ 17 ноября 2011

Если вы собираетесь использовать jQuery для построения этого списка, я бы захватил весь объект ваучеров в объект JavaScript с использованием жидкостного фильтра JSON. Однако мой предпочтительный способ сделать это - использовать жидкость, чтобы браузеры без 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 %}
...