nun_ja: jQuery: ein einzelnes Objekt adressieren

Guten Abend allerseits :-)

Folgendes kleines Problem:

Ich hole mir z.B. mit $("a") alle Links und möchte nun den ersten ansprechen.
$("a")[0] liefert kein jQuery-Objekt, sondern ein DOM-Objekt.
Ich kann $("a").slice(0,1) benutzen, finde das aber sehr unschön!

Könnt ihr mir helfen?

liebe grüße
fabian

  1. Hi,

    Ich hole mir z.B. mit $("a") alle Links und möchte nun den ersten ansprechen.
    $("a")[0] liefert kein jQuery-Objekt, sondern ein DOM-Objekt.

    Und was gefällt dir daran nicht?

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Hey Chris!

      Zunächst: Danke für die Antwort!

      Ich möchte dann wieder JQuery-spezifische funktionen benutzen! z.B.: .index(), .addClass()

      liebe Grüße
      Fabian

      1. Hallo nun_ja.

        Ich möchte dann wieder JQuery-spezifische funktionen benutzen! z.B.: .index(), .addClass()

        Pack ein $() außenrum:
        $($('.myclass')[0])

        Servus,
        Flo

        1. Ich danke!

          schönen Abend noch
          Fabian

          1. @@nun_ja:

            nuqneH

            Ich danke!

            Doch nicht dafür!

            Du wolltest „dann wieder JQuery-spezifische funktionen benutzen“. Dann tu es doch!!

            Qapla'

            --
            Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
            (Mark Twain)
        2. @@flowh:

          nuqneH

          Pack ein $() außenrum:
          $($('.myclass')[0])

          So’n Schmarrn!

          Qapla'

          --
          Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
          (Mark Twain)
          1. Pack ein $() außenrum:
            $($('.myclass')[0])

            So’n Schmarrn!

            Was ist denn daran so schlimm? eq() macht genau das, aber noch viel mehr. Es speichert das erste Set für Chaining und end(). Nur weil das Framework etwas bietet, muss es nicht besser oder angemessener sein.

            Mathias

            1. Was ist denn daran so schlimm? [...] Nur weil das Framework etwas bietet, muss es nicht besser oder angemessener sein.

              $('#foo') ist auch praktisch dasselbe wie document.getElementById('foo').

              Wenn man ein Framework verwendet, sollte man es aber nach Möglichkeit konsequent verwenden. Nur so ist sichergestellt, dass man Eventualtitäten, die man ggf. selbst nicht kennt, nicht beachten muss.

              Jemand wie du, der weiß wie JavaScript im Detail funktioniert und was in welchem Browser zu beachten ist, kann entscheiden ob es "risikofrei" ist oder nicht - jemand der das Framework verwendet weil er es nicht besser weiß, sollte aber tunlichst nicht daran vorbeiarbeiten und es sich garnicht erst angewöhnen.

              Beispiel:
              In TYPO3-Extension ist es auch problemlos möglich mit mysql-Funktionen aus PHP zu arbeiten, es hatte aber nicht wirklich Sinn, weil die Abstraktiosschicht die Daten quasi 1:1 durchgereicht hat. Seit TYPO3 4.4 ist die Abstraktionsschicht aber in der Lage mit verschiedenen DBMS umzugehen - will nun jemand eine andere Datenbank als MySQL verwenden, sind solche am Framework vorbeiprogrammierte Extensions extrem unhandlich und müssen manuell nachgebessert werden.

              1. Ich plädiere immer dafür, dass man verstehen sollte, was das Framework tut, und es nicht bloß als Blackbox zu sehen. Es steht natürlich jedem frei, das zu tun; oftmals gilt es bloß eine bestimmte Aufgabe zu erfüllen und ein tieferer Einstieg ist unnötig - meinetwegen. Wer aber ein besseres Verständnis von JavaScript entwickeln will oder den Code optimieren will/muss, dem sollte man nicht davon abraten, die Interna von Bibliotheken zu untersuchen.

                Richtig, in der Regel sollte Code konsistent sein und Abweichungen sollten begründet sein. Was mich am Posting störte, war das argumentlose Ablehnen. Tatsächlich ist die Umsetzung möglich und führt durchaus zum Ziel. Man hätte jedoch anmerken sollen, das das eine Low-Level-Lösung ist - die jQuery-intern auch verwendet wird - und High-Level-Methoden existieren, die u.U. vielseitiger und komfortabler sind. Also gälte es zu Erklären, was eq() im Unterschied [index] zu macht, in welchen Fällen das besser ist und in welchen Fällen die Low-Level-Variante ausreicht und besser performt. Man nutzt ja bestehende Funktionen nicht zum Selbstzweck, sondern aus guten Gründen, die du auch teilweise genannt hast. Ich finde, jeder JavaScripter sollte solche Entscheidungen selbst kompetent fällen können.

                Mathias

  2. @@nun_ja:

    nuqneH

    Ich hole mir z.B. mit $("a") alle Links und möchte nun den ersten ansprechen.

    Wenn du nicht weißt, was „der Erste“ auf Englisch heißt, brüllt der Löwe dir’s ins Ohr.

    Dieses Wissen werfen wir nun den Löwen zum Fraß vor.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. It is not going to be the first one all the time: It might be the second or the third or.... as well!

      also schönere ideen?

      liebe grüße
      fabian

      1. @@nun_ja:

        nuqneH

        also schönere ideen?

        Ja: „Beschreibe Dein Problem möglichst exakt

        .eq() vs. :eq().

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. merci!!

          hab noch ne gute nacht!
          fabian

        2. .eq() vs. :eq().

          Alternativ tuts auch ein CSS-Selektor, $('a:first-of-type()'); müsste $('a:eq(0)'); bzw. $('a').eq(0); entsprechen.

        3. Hallo Gunnar.

          .eq() vs. :eq().

          Hey cool, danke!
          Again what learned… ;-)

          Servus,
          Flo

          1. Again what learned… ;-)

            Thou shalt better english learning :p

            1. hallo suit,

              Again what learned… ;-)

              Thou shalt better english learning :p

              on every fall, I think I spider

              grüße,
              henman

              --
              "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
              sh:( fo:| ch:? rl:° br:> n4:? ie:% mo:) va:| de:] zu:) fl:{ ss:| ls:[ js:|
            2. @@suit:

              nuqneH

              Thou shalt better english learning :p

              Whereto? Man kann Hamlet auch im klingonischen Original lesen.

              Qapla'

              --
              Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
              (Mark Twain)