Wie kann der Klick auf einen Link mit jQuery programmgesteuert ausgelöst werden?

73

Wie kann der Klick auf einen Link mit jQuery programmgesteuert ausgelöst werden?

Mohit Jain
quelle
1
Seien Sie vorsichtig, wenn Sie als schädliche Site mit Javascript gekennzeichnet werden, das dies tut ... Das Klicken für einen Benutzer ist eine sehr unangenehme Sache
Populus
Hierfür gibt es legitime Anwendungsfälle. Wenn der Benutzer bereits auf etwas anderes geklickt hat, um einen Prozess auszulösen, der diesen Klick beinhaltet, und der Benutzer versteht, was vor sich geht, sehe ich das Problem nicht.
Andrew Koster

Antworten:

66
$('#your_link_id').click()

Weitere Informationen finden Sie in den ausgezeichneten jquery- Dokumenten

Thomas
quelle
54

Wenn Sie einen Ankerlink haben:

<a id="my_link_id" href="something">My Link</a>

es wird scheitern, wie andere Antworten erwähnt haben. Das Aufrufen von .eq und .trigger ('click') funktioniert bei mir nicht, aber das funktioniert:

$('#your_link_id').get(0).click();

In meinem speziellen Fall habe ich dem href des Ankers programmgesteuert eine Blob-URL zugewiesen.

Jag
quelle
5
Nachdem ich zahlreiche verschiedene Möglichkeiten ausprobiert habe, programmgesteuert auf eine Spanne zu klicken, ist dies die einzige, die für mich funktioniert.
LjCode
2
Vielen Dank. Viele Jahre später war dies ein Lebensretter.
11.
1
Dies ist der einzige, der für mich gearbeitet hat. .trigger("click")führte das Klickereignis zu oft aus, als dass ich eine Fehlermeldung erhalten würde: Uncaught RangeError: Maximale Aufrufstapelgröße überschritten
PouncingPoodle
Vielen Dank. .trigger("click")hat mir auch nicht geholfen. das tut .get(0).click();:)
yohan.jayarathna
1
.click()ruft alle von Ihnen definierten jQuery-Ereignishandler auf. .get(0)Gibt das DOM-Element zurück, das Sie dann als Klickmethode aufrufen können (nicht mit jQuery verwandt).
Jag
15
$('#your_link_id')[0].trigger('click');

wird benötigt, da jQuery ein Array zurückgibt und wir nicht auf mehrere Eventlinks klicken können. Sie müssen nur auf ein einzelnes Element abzielen

Sandeep Grünkohl
quelle
4
Tatsächlich wird dies einen Fehler auslösen, da Sie sich in einem nativen Element befinden, indem Sie [0] angeben. Um jQuery-Methoden für ein bestimmtes Element in einer Sammlung zu verwenden, verwenden Sie Filtermethoden wie .eq (0) oder .first () oder verpacken Sie das Ganze in ein anderes $ (). Beispiel: $ ('# your_link_id'). eq (0) .trigger ('click')
Marcy Sutton
3
Interessanterweise funktioniert Marcys Lösung bei mir nicht, Sandeeps. Aus irgendeinem Grund gibt $ ("# myDivIdentifier a"). Eq (0) immer noch ein Array von eins zurück. $ ("# myDivIdentifier a") [0] gibt mir ein einzelnes Element, das mit "click ()" bearbeitet werden kann.
Martin Greenaway