Sie vermissen den ganzen Punkt von jQuery. Ihre bevorzugte Methode funktioniert nicht mit jQuery, da jQuery nicht mit einzelnen DOM-Elementen arbeitet. Ein einzelnes DOM-Element hat eine OnClick-Eigenschaft, also wenn Sie so etwas wie dies täte, würde es funktionieren:
document.getElementById('bar').onclick = function() { // blah };
jedoch jQuery ist alles über Sets. Beispielsweise versuchen Sie in dem Code, den Sie eingefügt haben, etwas an alle Elemente mit einer Klasse von foo
zu binden. Wenn man so etwas macht, muss man nach jQuerys Regeln spielen (und das ist eine gute Sache!). Ein eingepackter Satz, dh $('.foo')
ist nicht das gleiche wie direkt bekommen ein DOM-Element wie ich oben getan habe. Es wird jedoch ein Array aller gefundenen DOM-Elemente enthalten, die jQuery verfügbar macht. Also, wenn es ein einzelnes Element mit einer Klasse von foo
im Dokument war, Sie konnte tun:
$('.foo')[0].onclick = function() { // blah };
Dies wird jedoch nicht als ganze Sinn von jQuery wird empfohlen, abstrakt aus all diesem speziellen Javascript Syntax und lassen Sie jQuery die Dinge für Sie herausfinden. Sie sollten dies begrüßen, da es Ihren Code viel sauberer und portabler macht. Als solche sollten Sie die click
oder die bind
Funktionen nutzen:
$('.foo').click(function() {
// will bind something to all elements with a class of foo
});
$('.foo').bind('click', function() {
// functionally identical to the above, either is fine
});
Vielen Dank. Ich habe Mootools betrachtet, und ich glaube, dass $ ein Array von Elementen oder ein Element zurückgibt, und Sie können damit die nativen DOM-Funktionen verwenden, sowie alle, die von Mootools hinzugefügt wurden. Wenn das stimmt, dann glaube ich, dass mich das so verwirrt hat. –
jQuerys Version von $ ist nicht genau so. Wie gesagt, selbst wenn es nur 1 Element zurückgibt, können Sie damit DOM-Funktionen nicht direkt ausführen, wenn Sie nicht die [0] -Syntax verwenden. jQuery hat ziemlich viel etwas für alles, was Sie wahrscheinlich mit einem Element tun möchten, so kommt dies nicht sehr oft. Es wird als beste Methode angesehen, die jQuery-Methode zu verwenden, da die Handhabung der DOM-Funktionen direkt einen Teil der Größe von jQuery ausschaltet, die alle Cross-Browser-Macken für Sie behandelt. –