2017-12-23 3 views
0

Say I have 3 divsWie ein Element zurückzukehren, basierend auf der Klasse mit mehreren Klassen

<div class="one"></div> 
<div class="one two"></div> 
<div class="one two three"></div> 
<div class="one two"></div> 
<div class="one"></div> 

Und in meinem js ich habe folgende

var active = document.getElementsByClassName("one"); 

, die alle drei divs zurückkehren. Ich möchte nur das FIRST und LAST div genannt werden. Wie kann dies mit jQuery erreicht werden?

+0

'var first = aktiv [0]' –

+0

ich meine Antwort bearbeiten. Nein, das wird nicht helfen. Was wäre, wenn meine Elemente zum Beispiel nicht in dieser Reihenfolge wären? –

Antwort

2

Dieser leicht mit javascript erreicht werden kann. Überprüfen Sie, ob der classList eines <div> gleich dem class ist, den Sie auswählen möchten. Wenn es nicht gleich ist, bedeutet dies, dass classList mehr als eine Klasse enthält.

function getValue() 
 
{ 
 
    var divs = document.getElementsByClassName("one"); 
 
    
 
    for(var i=0; i < divs.length; i++) 
 
    { 
 
    if(divs[i].classList == 'one') 
 
    { 
 
     alert(divs[i].innerHTML); 
 
    } 
 
    } 
 
}
<div class="one">hi</div> 
 
<div class="one two">there</div> 
 
<div class="one two three">coffee?</div> 
 
<div class="one">not today?</div> 
 

 
<input type="button" onclick="getValue()" value="click me" />

+0

perfekt genau das, was ich brauchte –

2

Während Sie sagte, wie dies mit Jquery erreicht werden kann? Sie können jquery wie diese

//$('.one:first , .one:last').css('background' , 'red'); // if you just need first one and last one 
 

 
$('.one:not(.two , .three)').css('background' , 'red'); // if you need the one class but not two or three
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="one">1</div> 
 
<div class="one two">2</div> 
 
<div class="one two three">3</div> 
 
<div class="one">1</div>

1

ich in diesem Fall würde vorschlagen, verwenden:

// finding all elements whose 'class' attribute starts with 
// 'one' and also ends with 'one' 
document.querySelectorAll('[class^="one"][class$="one"]'); 

Oder, einfacher gesagt:

// finding all elements whose class attribute-value is 
// equal to 'one' 
document.querySelectorAll('[class="one"]'); 

Referenzen:

+1

Dies sollte die akzeptierte Antwort sein. Native Selektoren zu verwenden, ist immer besser als manuelles Durchlaufen von Klassenlisten ... – webnoob

+0

Einverstanden, aber ich bin (offensichtlich) ein wenig voreingenommen;) aber manchmal ist es schwierig nach einer Frage mit einem Ansatz ('getElementsByClassName()') zu bekommen eine Antwort mit diesem Ansatz, und dann zu einem anderen Ansatz wechseln, der vielleicht nicht erwartet wurde. Tool Vertrautheit ist eine mächtige Sache! Außerdem glaube ich, dass das OP die derzeit akzeptierte Antwort akzeptiert hat, als ich diese schrieb. :) –

+0

@DavidThomas Ich stimme zu. Ich wurde vorher für die Verwendung von 'jQuery' heruntergeregelt, also habe ich es auf die sichere Art gemacht, besonders nachdem ich 'document.getElem ....' gesehen habe. Ihre Antwort ist besser, aber meine ist für das OP wahrscheinlich verständlicher. – Ivan86

Verwandte Themen