Warum kann jQuery keinen nativen Klick auf ein Anchor-Tag auslösen?

9

Kürzlich habe ich festgestellt, dass jQuery das native click-Ereignis auf einem Anker-Tag nicht auslösen kann, wenn ich auf andere Elemente klicke, das folgende Beispiel funktioniert nicht:

html

%Vor%

JavaScript

%Vor%

Und hier ist die jsfiddle - 1 . Klicken Sie auf den ersten Link wird nicht ausgelöst nativen Klick auf den zweiten.

Nach einigen Suchen fand ich eine Lösung und eine Erklärung.

Lösung

Verwenden Sie das native DOM-Element.

%Vor%

Und hier ist die jsfiddle - 2 .

Erklärung

Ich habe einen Beitrag zu Learn jQuery gefunden: Auslösende Ereignishandler . Es sagte mir:

  

Die Funktion .trigger () kann nicht dazu verwendet werden, native Browserereignisse nachzuahmen, z. B. durch Klicken auf ein Dateieingabefeld oder ein Anker-Tag. Dies liegt daran, dass kein Event-Handler mit dem Ereignissystem von jQuery verbunden ist, das diesen Ereignissen entspricht.

Frage

Also hier kommt meine Frage:

Wie kann man verstehen? Es gibt keinen Event-Handler, der mit dem Ereignissystem von jQuery verbunden ist, das diesen Ereignissen entspricht ?

Warum gibt es keinen entsprechenden Event-Handler?

BEARBEITEN

Ich update meine jsfiddles, es scheint, dass es ist und Fehler auf den Klassennamen.

    
Witcher42 26.12.2013, 09:44
quelle

4 Antworten

3
  

Es gibt keinen Event-Handler, der mit dem Ereignissystem von jQuery verbunden ist, das diesen Ereignissen entspricht

Dies bedeutet, dass zu diesem Zeitpunkt des Lernmaterials keine jQuery-Ereignisbehandlungsroutinen diesen Elementen mit .click(function() {} oder .bind('click', function () {}) usw. angehängt wurden.

Das fehlende Argument .click() wird verwendet, um ein "Klick" -Ereignis aus der Perspektive von jQuery auszulösen ( .trigger('click') ), das alle von jQuery registrierten "click" -Ereignisbehandlungsroutinen mit .click , .bind ,% ausführt co_de%, usw. Dieses Pseudo-Ereignis wird nicht an den Browser gesendet.

  

.trigger ()

     

Führt alle Handler und Verhaltensweisen aus, die den übereinstimmenden Elementen für den angegebenen Ereignistyp zugeordnet sind.

Überprüfen Sie das aktualisierte jsFiddle-Beispiel und klicken Sie auf die beiden Links, um den Unterschied zu sehen. Hoffe es hilft.

    
Arie Xiao 26.12.2013, 10:17
quelle
1

Ich glaube, Sie haben vergessen, die Dokumentation zu lesen.

Dokument sagt:

%Vor%     
Dipesh Parmar 26.12.2013 09:48
quelle
0

Zuerst müssen Sie das Standardverhalten von link

verhindern %Vor%

Und um das Klick-Ereignis auszulösen, können Sie auch .trigger('click') better way

verwenden

Und der Event-Handler wird wie folgt verwendet:

%Vor%     
Bhojendra Nepal 26.12.2013 09:48
quelle
-3

Sie müssen $("selector").trigger('click')

verwenden     
Rajasekhar 26.12.2013 09:48
quelle

Tags und Links