2016-06-07 8 views
-1

generiert wurde Ich habe eine Gruppe von Bildern, jedes Bild habe data-type="type,type", also um mein Leben einfacher zu machen, habe ich vor, den Dateityp zu greifen und sie zu einem Array zu machen jeder von ihnen in span) und an ein "category" -Element anhängen.Duplizierten Wert entfernen, der durch Elementdaten

$('li.grid-item').each(function() { 
    // grab a reference to the current li 
    var $el = $(this); 
    // get the url from its data-class attribute 
    var arr = $el.find('img').data('type').split(','); 

    $.each(arr, function (index, value) { 
     $el.find('.category').append('<span>' + value + '</span>'); 
     $el.addClass(value); 
    }); 
}); 
<li class="grid-item"> 
    <figure> 
     <img src="img/sticker/still/sticker_30.png" alt="sticker" title="You know I'm good" data-type="others/" data-price="9 bahts" data-alt="img/sticker/ani/sticker_30.gif" /> 
    </figure> 
    <a href="#"> 
     <span class="download ala_carte">CONTINUE</span> 
    </a> 
    <div class="category"></div> 
</li> 

Es funktionieren aber 20 jeder Wert dupliziert, bitte helfen Sie. Wie entfernt man diesen doppelten Array-Wert? Bitte helfen Sie, danke im Voraus.

+1

ich sehe nichts replizieren 20x. https://jsfiddle.net/atg5m6ym/5587/ – chungtinhlakho

+0

Was @chungtinhlakho sagte! Versucht dies in einer anderen Geige, kann ich das Problem nicht replizieren. Es ist entweder ein Problem mit anderem Code oder etwas anderes. Bitte geben Sie weitere Informationen an! –

+0

[link] (http://greysaga.com/demo/ms/) Ich lege es hier, guck mal, danke! –

Antwort

0

Ich denke, es ist besser, alle vorhandenen Typen zuerst in Array zu sammeln (und nur neue Werte hinzufügen, wenn es nicht bereits existierte). Anschließend können Sie für jeden Typ Bereichselemente hinzufügen. Und Sie sollten nur einen "Kategorie" -Behälter haben, um alle Typen aufzulisten.

aktualisieren

Ihre Funktion zu oft ausgeführt wird (mehr als 20 Mal), weil Sie es jedes Mal Ihre $ grid.imagesLoaded anrufen() macht Fortschritte. Nennen Sie es, wenn Sie fertig sind. Versuchen

$grid.imagesLoaded().progress() 

mit

$grid.imagesLoaded().done() 

ersetzen Ihre Funktion aufrufen nur einmal, nachdem alle Bilder geladen sind. Zusätzlich können Sie den Kategoriecontainer leeren, bevor Sie ihn erneut füllen.

+0

Danke Eytibi, aber ich weiß nicht wie. Bitte schau dir die [demo] (http://greysaga.com/demo/ms/) an, dann weißt du was ich meine. Ich denke ... lol –

+0

Ich denke, ich habe Ihr Problem gefunden. Ihre Funktion wird oft ausgeführt (mehr als 20 Mal), weil Sie sie jedes Mal aufrufen, wenn Ihr $ grid.imagesLoaded() Fortschritte macht. Rufen Sie es an, wenn Sie fertig sind Versuchen Sie, "$ grid.imagesLoaded(). Progress (function()" mit "$ grid.imagesLoaded(). Done (function()" zu ersetzen Darüber hinaus könnten Sie den Kategoriecontainer leeren bevor es wieder gefüllt wird – Eytibi

+0

WOW! Es funktioniert !!!! Danke !!!! Nun, wie markieren Sie dies, als meine Frage beantwortet wurde? Entschuldigung, ich bin neu, ich googelte ein wenig, aber kann das grüne Häkchen finden. –

Verwandte Themen