2010-12-03 6 views
3

Ich schaue mir ein Beispiel für die Verwendung von jqGrid an, das ein jQuery-Plugin ist.

Es ist ein Raster in einem Div mit einer ID von "Liste" zeichnen.

Erzeugt das Raster mit $('#list').jqGrid(...).

Aber es füllt das Raster mit $('#list')[0].addJSONData(...).

Ich habe im Internet nach Tutorials zu jQuery gesucht und versucht, den Unterschied zu verstehen, und ich habe nichts gefunden, was die - für mich - grundlegendste Frage der Verwendung von iQuery behandelt.

Was gibt $() zurück? Gibt es ein jquery-Objekt zurück, das ein DOM-Element enthält? Gibt es ein jquery-Objekt zurück, das ein Array von DOM-Elementen enthält? Gibt es ein DOM-Element zurück, dem zusätzliche jQuery-Funktionen hinzugefügt wurden?

Und was dann ist $()[0]? Wenn $() ein jQuery-Objekt zurückgegeben hat, das ein Array von DOM-Elementen enthält, würde ich erwarten, dass es das div mit der ID 'list' ist, aber addJSONData ist keine DOM-Methode, es ist eine jqGrid-Methode. Enthält jqGrid diese Methode für alle DOM-Elemente im Array?

===== ====== ADDED

Wenn $() ein Jquery-Objekt zurückgibt, das eine arrray von DOM-Objekte enthält, warum $ nicht() [0] auf ein Objekt beziehen, enthält eine addJSONData-Methode? addJSONData ist keine DOM-Methode, sondern eine jqGrid-Methode.

+1

Einige dieser Beantworter Aufruf sollte die Antwort Raum aufzuräumen. Müssen wir 6 Antworten haben, die alle sagen "$() gibt ein jQuery-Objekt zurück"? – Stephen

+0

Alles, was Sie wissen müssen und mehr: http://api.jquery.com/jQuery/ – Stephen

Antwort

3

$() gibt eine Sammlung von Elementen basierend auf dem Selektor zurück. So würde $('.help') alle Elemente mit einer Klasse von .help zurückgeben. $('.help')[0] würde Ihnen das erste Element geben.

0

Das jQuery-Objekt gibt bei Verwendung mit einem Selektor ein Array mit DOM-Elementen zurück. In diesem Fall stellt $('#list') ein Array (mit einem Slot, da dies eine ID ist) von Elementen dar, die mit der ID '#list' übereinstimmen.

4

$() a jquery Selektor ist, dauert es CSS-Expression und es in jQuery Objekt ist $ tatsächlich eine Abkürzung von jQuery, d.h. jQuery() und $() sind gleich.

$()[0] nimmt einfach das nicht jQuery-Objekt, wenn Sie also $('#someId')[0] tun, dann ist es das gleiche wie getElementById('someId');

+0

Das ist richtig, aber Sie sollten erklären * warum * Ihre zweite Aussage ist wahr. – Stephen

0

$() gibt ein jQuery-Objekt, das eine Reihe von abgestimmten Elementen enthält. Die Indizierung in das jQuery-Objekt über $() [0] gibt das erste übereinstimmende DOM-Objekt zurück.

var docWrappedInJQuery = $('document'); 
var bareDoc = $('document')[0]; 
assert((document === docWrappedInJQuery) === false); 
assert((document === bareDoc) === true); 
2

$() ist ein Alias ​​für die jQuery() function. Es gibt ein jQuery-Objekt und Elemente zurück, die dem angegebenen Selektor entsprechen. Wenn übereinstimmende Elemente gefunden würden, würde $() [0] Ihnen das erste DOM-Element geben.

Siehe die jQuery documentation für eine vollständige Erklärung.

0

$() ist das gleiche wie Aufruf jQuery().Die Dokumentation ist hier: http://api.jquery.com/jQuery/

Beachten Sie $(function() { }) Aufruf an eine Abkürzung $(document).ready(function() { });