jQuery.click () vs onClick
Ich habe eine riesige jQuery-Anwendung, und ich bin, anhand der folgenden zwei Methoden für die click-Ereignisse.
Erste Methode
HTML -
<div id="myDiv">Some Content</div>
jQuery
$('#myDiv').click(function(){
//Some code
});
Zweite Methode
HTML -
<div id="myDiv" onClick="divFunction()">Some Content</div>
JavaScript-Funktion
function divFunction(){
//Some code
}
Benutze ich entweder die erste oder die zweite Methode, die in meiner Anwendung. Welches ist besser? Besser für die Leistung? Und standard?
Kommentar zu dem Problem
Sie können erfahren Sie mehr über die verschiedenen Möglichkeiten, Sie zu befestigen, event-Handler und Ihre Vorteile/Nachteile hier: quirksmode.org/js/introevents.html. jQuery ist einfach nur ein netter wrapper für erweiterte event-Registrierung.
Denken Sie daran, dass die Klick-Funktion in der $(document).bereit(Funktion().
InformationsquelleAutor der Frage Techie | 2012-09-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit
$('#myDiv').click(function(){
ist besser wie folgt standard-event-Registrierung-Modell. (jQuery intern verwendetaddEventListener ()
undattachEvent
).Grundsätzlich die Registrierung einer Veranstaltung in moderne Art ist die unauffällig Umgang mit events. Auch die Registrierung mehr als einen Ereignis-listener für das Ziel, das Sie nennen können
addEventListener()
für das gleiche Ziel.http://jsfiddle.net/aj55x/1/
Mehr über Moderne event-Registrierung -> http://www.quirksmode.org/js/events_advanced.html
Andere Methoden wie die Einstellung der HTML-Attribute, Beispiel:
Oder DOM-Elemente-Eigenschaften, Beispiel:
alt sind und Sie können über leicht geschrieben.
HTML-Attribut sollten vermieden werden, da Es macht das markup größer und weniger lesbar. Bedenken von Inhalt/Struktur und Verhalten sind nicht gut voneinander getrennt, was ein Fehler schwerer zu finden.
Das problem mit der DOM-element Eigenschaften Methode ist, dass nur ein event-handler gebunden werden können, um ein element pro Veranstaltung.
Mehr über das Traditionelle event-handling -> http://www.quirksmode.org/js/events_tradmod.html
MDN Referenz: https://developer.mozilla.org/en-US/docs/DOM/event
InformationsquelleAutor der Antwort Selvakumar Arumugam
Bessere Leistung zu erzielen, verwenden Sie die native JavaScript. Für eine schnellere Entwicklung, jQuery verwenden. Überprüfen Sie den Vergleich in der Leistung beim jQuery vs Native Element Leistung.
Ich habe ein test im Firefox 16.0 32-bit auf Windows Server 2008 R2 /7 64-bit
Für click-Ereignisse, überprüfen Sie Native Browser-Veranstaltungen vs jquery trigger oder jQuery vs Native Click-Ereignis Binden.
Tests in Chrome 22.0.1229.79 32-bit auf Windows Server 2008 R2 /7 64-bit
InformationsquelleAutor der Antwort Marian Zburlea
Aus, was ich verstehe, deine Frage nicht wirklich, ob jQuery verwenden oder nicht. Es ist eher: Ist es besser, sich zu binden-events "inline" im HTML-oder durch Ereignis-Listener?
Inline-Bindung ist veraltet. Darüber hinaus diese Weise können Sie nur binden, eine Funktion zu einem bestimmten Ereignis.
Daher empfehle ich die Verwendung von Ereignis-Listener. Auf diese Weise werden Sie in der Lage sein zu binden, viele Funktionen auf ein einzelnes Ereignis und trennen Sie Sie später, wenn nötig. Betrachten Sie dieses Reine JavaScript-code:
Dies funktioniert in den meisten modernen Browsern.
Jedoch, wenn Sie bereits unter anderem jQuery in Ihr Projekt — nutzen Sie einfach jQuery:
.on
oder.click
Funktion.InformationsquelleAutor der Antwort
$('#myDiv').click
ist besser, denn es trennt JavaScript-code aus HTML. Man muss versuchen, zu halten die Seite Verhalten und Struktur unterschiedlich. Dies hilft viel.InformationsquelleAutor der Antwort geekman
Könnte man kombinieren, jQuery verwenden, binden Sie die Funktion, um die klicken Sie auf
InformationsquelleAutor der Antwort CaffGeek
Gehen, da dies wird Ihnen sowohl standard-und performance.
Als die zweite Methode ist die einfache JavaScript-code und ist schneller als jQuery. Aber hier ist die Leistung in etwa gleich sein.
InformationsquelleAutor der Antwort Rahul
IMHO, onclick, ist die bevorzugte Methode über .klicken Sie nur, wenn folgende Bedingungen erfüllt sind:
Gründete ich diese Meinung aufgrund der Tatsache, dass die JavaScript-engines, die auf mobilen Geräten sind 4 bis 7 mal langsamer als Ihre desktop-Pendants, die in der gleichen generation. Ich hasse es, wenn ich auf eine Website auf meinem mobilen Gerät und erhalten hibbelig scrollen, weil das jQuery ist verbindlich, alle Veranstaltungen zu Lasten meines Benutzerfreundlichkeit und Lebensdauer der Batterie. Ein weiteres Aktuelles unterstützenden Faktor, obwohl dies nur ein Anliegen mit staatlichen stellen 😉 , wir hatten IE7 pop-up-Meldung, die besagt, dass JavaScript ist zu lang...warten oder Abbrechen Prozess. Dies geschah jedes mal gab es eine Menge von Elementen zu binden, um über jQuery.
InformationsquelleAutor der Antwort Thomas Vanderhoof
Unterschied in den Werken. Wenn Sie verwenden, klicken Sie auf(), können Sie mehrere Funktionen, aber wenn Sie ein Attribut verwenden, wird nur eine Funktion ausgeführt werden, - die Letzte.
DEMO
HTML
JavaScript
Wenn wir reden über die Leistung, die in jedem Fall direkt mit ist immer schneller, aber die Verwendung von einem Attribut ist, werden Sie in der Lage sein, weisen Sie nur eine Funktion.
InformationsquelleAutor der Antwort Anton Baksheiev
Trennung von Belangen ist der Schlüssel hier, und so ist die Veranstaltung verbindlich ist die allgemein anerkannte Methode. Dies ist im Grunde das, was viele der vorhandenen Antworten gesagt haben.
Jedoch nicht wegwerfen die Idee der deklarativen markup zu schnell. Es hat seinen Platz, und mit frameworks wie Angularjs, ist das Herzstück.
Kann, braucht es ein Verständnis, dass die ganze
<div id="myDiv" onClick="divFunction()">Some Content</div>
war beschämt so stark, weil es missbraucht wurde, indem einige Entwickler. So erreichte er den Punkt, von frevelhaften Proportionen, ähnlich wietables
. Einige Entwickler eigentlich vermeidentables
für tabellarische Daten. Es ist das perfekte Beispiel für Menschen, die handeln ohne zu verstehen.Obwohl ich mag die Idee des Haltens mein Verhalten trennen von meinen Ansichten. Ich sehe kein Problem mit der markup-Deklaration was es tut (nicht wie Sie es tut, das ist-Verhalten). Es könnte sein, in form einer tatsächlichen onClick-Attribut, oder ein benutzerdefiniertes Attribut, das viel wie Stiefelriemen javascript-Komponenten.
Diese Weise, durch einen Blick nur auf das markup, können Sie sehen, was funktioniert, anstatt zu versuchen, reverse-lookup-javascript-event-Bindemittel.
So, als Dritte alternative zu den oben genannten, unter Verwendung von Daten Attribute declarativly verkünden, das Verhalten innerhalb des Markups. Verhalten gehalten wird, aus der Ansicht, sondern auf einen Blick können Sie sehen, was passiert ist.
Bootstrap Beispiel:
Quelle: http://getbootstrap.com/javascript/#popovers
Hinweis Der Haupt-Nachteil, mit dem zweiten Beispiel ist die Verschmutzung der globalen namespace. Dies kann umgangen werden, indem entweder die Dritte alternative vor, oder frameworks wie Angular und Ihre ng-klicken Sie auf Attribute automatisch mit Umfang.
InformationsquelleAutor der Antwort Chris
Weder das eine ist besser, dass Sie für verschiedene Zwecke verwendet werden.
onClick
(sollte eigentlichonclick
) führt sehr leicht besser, aber ich bezweifle stark, werden Sie bemerken einen Unterschied gibt.Es ist erwähnenswert, dass Sie verschiedene Dinge tun:
.click
gebunden werden kann, um alle jQuery-collection in der Erwägung, dassonclick
verwendet werden inline auf die Elemente, die Sie wollen, dass es gebunden ist. Sie können auch binden, nur ein Ereignis mitonclick
, in der Erwägung, dass.click
können Sie weiterhin binden Ereignisse.Meiner Meinung nach, würde ich konsequent sein über Sie, und nutzen Sie einfach
.click
überall und zu halten alle mein JavaScript-code zusammen und getrennt von der HTML werden.Nicht verwenden
onclick
. Es gibt keinen Grund, es zu benutzen, es sei denn, Sie wissen, was Sie tun, und Sie wahrscheinlich nicht.InformationsquelleAutor der Antwort Explosion Pills
onclick, onmouseover, onmouseout, etc. events sind eigentlich schlecht für die performance (in Internet Explorer vor allem, gehen Sie Abbildung). Wenn Sie den code mit Visual Studio, wenn Sie führen Sie eine Seite mit diesen, jeder einzelne von diesen wird eine separate SKRIPT-block unter Speicher, und dadurch verlangsamt sich die Leistung.
Nicht zu erwähnen, sollten Sie eine Trennung der Anliegen: JavaScript-und Layout getrennt werden sollte!
Es ist immer besser, zu erstellen evenHandlers für jedes dieser Ereignisse ist ein Ereignis erfassen kann Hunderte/Tausende von Artikeln, erstellen, anstatt Tausende von script-Blöcke für jeden!
(Auch, alles, was alle anderen sagen.)
InformationsquelleAutor der Antwort Mark Pieszak - DevHelp.Online
Gut, eine der wichtigsten Ideen, die hinter jQuery ist die separate JavaScript-von der böse HTML code. Die erste Methode ist der Weg zu gehen.
InformationsquelleAutor der Antwort supernova
Meisten der Zeit, native JavaScript-Methoden sind eine bessere Wahl über jQuery bei der Leistung ist das einzige Kriterium, aber jQuery macht JavaScript und ermöglicht die Entwicklung leicht. Sie können jQuery verwenden, da es nicht beeinträchtigen die Leistung zu viel. In Ihrem speziellen Fall, der Unterschied der Leistung ist vernachlässigbar.
InformationsquelleAutor der Antwort Adil
Die erste Methode mit
onclick
ist nicht jQuery, sondern einfach Javascript ein, damit Sie nicht den overhead von jQuery. Die jQuery Weise kann erweitert über Selektoren, wenn Sie benötigt werden, um es in andere Elemente, die ohne das hinzufügen der Ereignishandler für jedes element, aber als Sie es jetzt haben, es ist nur eine Frage, wenn Sie brauchen, um jQuery verwenden oder nicht.Persönlich da man sich mit jQuery würde ich dabei bleiben, wie es ist konsistent und nicht entkoppeln, die markup aus dem Skript.
InformationsquelleAutor der Antwort Dustin Laine
Die erste Methode ist zu bevorzugen. Es verwendet die erweiterte event-Registrierung-Modell[s], was bedeutet, dass Sie anfügen können mehrere Handler auf das gleiche element. Sie können ganz einfach Zugriff auf das event-Objekt, und der handler kann Leben in jeder Funktion Gültigkeitsbereich. Auch, es ist dynamisch, ich.e es kann jederzeit aufgerufen werden und ist besonders gut geeignet für dynamisch generierte Elemente. Ob Sie jQuery verwenden, eine andere Bibliothek oder die nativen Methoden direkt nicht wirklich wichtig.
Die zweite Methode, die Verwendung von inline-Attribute, braucht eine Menge von globalen Funktionen (die führt, um namespace pollution) und mischt den Inhalt/Struktur (HTML) mit dem Verhalten (JavaScript). Verwenden Sie nicht, dass.
Ihre Frage über Leistung oder standards kann nicht leicht beantwortet werden. Die beiden Methoden sind einfach völlig unterschiedlich, und verschiedene Dinge tun. Die erste ist mächtiger, während die zweite ist, verachtet (als schlechter Stil).
InformationsquelleAutor der Antwort Bergi
Ausführen von JavaScript, wenn auf eine Schaltfläche geklickt wird:
InformationsquelleAutor der Antwort Siddharam Padamgond