johny7: jQuery mit eq() ausschließen

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

--
ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
http://www.johny7.de
  1. 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

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. 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

      --
      ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
      http://www.johny7.de
    2. 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))

      1. 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

        --
        ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
        http://www.johny7.de
      2. @@suit:

        nuqneH

        Wie wärs mit .elements:not(:nth-child(5))

        Oder jQuerys eigenem :eq()? $('.elements:not(:eq(1))').addClass('haha');

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. @@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'. ;-)

          --
          Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
          (Mark Twain)
        2. 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.

          1. @@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'

            --
            Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
            (Mark Twain)
            1. 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.