jQuery: ein einzelnes Objekt adressieren
nun_ja
- javascript
0 ChrisB0 nun_ja0 flowh
0 Gunnar Bittersmann
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
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
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
Hallo nun_ja.
Ich möchte dann wieder JQuery-spezifische funktionen benutzen! z.B.: .index(), .addClass()
Pack ein $(…)
außenrum:
$($('.myclass')[0])
Servus,
Flo
Ich danke!
schönen Abend noch
Fabian
@@nun_ja:
nuqneH
Ich danke!
Doch nicht dafür!
Du wolltest „dann wieder JQuery-spezifische funktionen benutzen“. Dann tu es doch!!
Qapla'
@@flowh:
nuqneH
Pack ein
$(…)
außenrum:
$($('.myclass')[0])
So’n Schmarrn!
Qapla'
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
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.
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
@@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'
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
@@nun_ja:
nuqneH
also schönere ideen?
Ja: „Beschreibe Dein Problem möglichst exakt“
Qapla'
merci!!
hab noch ne gute nacht!
fabian
Alternativ tuts auch ein CSS-Selektor, $('a:first-of-type()');
müsste $('a:eq(0)');
bzw. $('a').eq(0);
entsprechen.
Again what learned… ;-)
Thou shalt better english learning :p
hallo suit,
Again what learned… ;-)
Thou shalt better english learning :p
on every fall, I think I spider
grüße,
henman
@@suit:
nuqneH
Thou shalt better english learning :p
Whereto? Man kann Hamlet auch im klingonischen Original lesen.
Qapla'