2016-04-28 6 views
-1

ich eine Liste von Elementen, die so etwas wie diese:jQuery erstes Element der Klasse findet mit einzigartiger ID

<article id="post-647" class="brand-search-result brand-alaffia hidden"></article> 
<article id="post-647" class="brand-search-result brand-alaffia hidden"></article> 
<article id="post-647" class="brand-search-result brand-alaffia hidden"></article> 

<article id="post-650" class="brand-search-result brand-alter-eco hidden"></article> 
<article id="post-650" class="brand-search-result brand-alter-eco hidden"></article> 
<article id="post-650" class="brand-search-result brand-alter-eco hidden"></article> 

Nun, was ich will, ist die erste von jeder eindeutigen ID finden und die versteckte Klasse entfernen. Dies ist, was ich bisher in jquery habe:

Nur Problem ist dies auf jedem Artikel Element ausgeführt, die Sinn macht. Irgendwelche Vorschläge?

+6

Vorschlag: ** ids müssen einzigartig ** – theblindprophet

+0

sein, wenn Sie mehrere Elemente durch eindeutige Zeichenfolge Nutzungsklassen – fdfey

+0

@theblindprophet ganz richtig auswählen möchten - außer, es sollte als ein Vorschlag mehr sein. – Alfie

Antwort

1

Speichern Sie irgendwo die Informationen der einzigartigen Post. Überspringe zukünftige.

var processedPosts = {}; 

(function(){ 
$("[id^=post-]").each(function(){ 
    var id = $(this).prop("id") //modify to use unique ids (as suggested in comments) 

    if (!processedPosts[id]) { 
     $(this).first(".brand-search-result").removeClass('hidden'); 
     processedPosts[id] = true; 
    } 
}); 

})();

+0

danke @ThiagoPXP das ist genau das, was ich wollte! – rhysclay

0

Sie kamen nahe.

'#' + $ (this) .attr ('id')

'#' plus die ID und dann wir es als Selektor verwenden.

$("[id^=post-]").each(function() { 
 
    $('#' + $(this).attr('id')).first('.brand-search-result').removeClass('hidden'); 
 
});
.hidden { display: none }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 
 
<article id="post-647" class="brand-search-result brand-alaffia hidden">post-647</article> 
 
<article id="post-647" class="brand-search-result brand-alaffia hidden">post-647</article> 
 
<article id="post-647" class="brand-search-result brand-alaffia hidden">post-647</article> 
 

 
<article id="post-650" class="brand-search-result brand-alter-eco hidden">post-650</article> 
 
<article id="post-650" class="brand-search-result brand-alter-eco hidden">post-650</article> 
 
<article id="post-650" class="brand-search-result brand-alter-eco hidden">post-650</article>

Sie brauchen nicht in Array zu speichern und gegen sie überprüfen.

JS Fiddle

Verwandte Themen