jQuery mit eq() ausschließen
johny7
- javascript
1 Hopsel0 johny70 suit
Moin allerseits,
ich will allen, außer einem Element eine Klasse hinzufügen. Ich kann jetzt natürlich folgendes tun:
$('.elements').addClass('haha');
$('.elements').eq(5).removeClass('haha');
Gibt es denn eine elegantere Lösung?
Grüße, JN
Hi johny7!
Gibt es denn eine elegantere Lösung?
Ob sie eleganter ist... naja.
$('.elements:lt(5),.elements:gt(5)').addClass('haha');
MfG H☼psel
Moin allerseits,
Hi johny7!
Gibt es denn eine elegantere Lösung?
Ob sie eleganter ist... naja.
$('.elements:lt(5),.elements:gt(5)').addClass('haha');
Müsste aber theoretisch funktionieren. Man kann das ja in eine Funktion noteq() packen, dann wird's richtig elegant.
Grüße, JN
Gibt es denn eine elegantere Lösung?
Ob sie eleganter ist... naja.
Eleganter ist das nicht.
$('.elements:lt(5),.elements:gt(5)').addClass('haha');
Wie wärs mit .elements:not(:nth-child(5))
Moin allerseits,
Gibt es denn eine elegantere Lösung?
Ob sie eleganter ist... naja.Eleganter ist das nicht.
$('.elements:lt(5),.elements:gt(5)').addClass('haha');
Wie wärs mit
.elements:not(:nth-child(5))
Und das ist viel eleganter? Ich glaube, die Lösung von Hopsel in eine Funktion verpackt ist wesentlich eleganter.
Grüße, JN
@@suit:
nuqneH
Wie wärs mit
.elements:not(:nth-child(5))
Oder jQuerys eigenem :eq()? $('.elements:not(:eq(1))').addClass('haha');
Qapla'
@@Gunnar Bittersmann:
nuqneH
Oder jQuerys eigenem :eq()?
$('.elements:not(:eq(1))').addClass('haha');
Oder mit Methode:
var $elements = $('.elements');
$elements.not($elements.eq(1)).addClass('haha');
Qapla'
PS: Ich war zu faul, zum Testen so viele Elemente zu erstellen. Deshalb bei mir '1' statt '5'. ;-)
Oder jQuerys eigenem :eq()?
$('.elements:not(:eq(1))').addClass('haha');
:eq() ist verwirrender da es nach dem index geht - das fünfte Element ist mit :eq(4) zu selektieren.
Zudem ist es imho immer schlauer CSS-Selektoren zu verwenden wo es geht, da man diese ggf. später leichter ins CSS verlagern kann, wenn die Browserunterstüzung ausreichend wird.
@@suit:
nuqneH
Zudem ist es imho immer schlauer CSS-Selektoren zu verwenden wo es geht
Die jQuery-Doku sagt da anderes: “The .not() method is typically faster and may end up providing you with more readable selections than pushing complex selectors or variables into a :not() selector filter.”
Qapla'
Die jQuery-Doku sagt da anderes: “The .not() method is typically faster and
Das ist ein Argument, aber in der Praxis vermutlich vernachlässigbar, sofern man nicht wirklich eine Killer-Site produziert.
may end up providing you with more readable selections than pushing complex selectors or variables into a :not() selector filter.”
Was lesbarer ist und was nicht, möchte ich bitte selbst entscheiden :)
Verständlicher ist für mich jedenfalls ein CSS-kompatibler Selektor, da ich ich mir nicht die gebräuche auf zwei Baustellen merken muss.