2010-05-16 2 views
34

Versuch, ein Klickereignis auszulösen (auszulösen). Es ist einfach, in jQuery zu tun, aber kann nicht herausfinden, wie man die Koordinaten des Ereignisses einstellt und sie schickt.Auslösen eines JavaScript click() - Ereignisses an bestimmten Koordinaten

Im Wesentlichen muss ich einen Klick an einer bestimmten Stelle auslösen (die vor dem Aufruf von trigger() berechnet wird).

Jeder Weg, dies zu tun (in jQuery oder anders)?

Dank -

Antwort

42

Stellen Sie die pageX und pageY Eigenschaften (die normiert sind) auf dem event object und übergeben es an .trigger(), wie folgt aus:

var e = new jQuery.Event("click"); 
e.pageX = 10; 
e.pageY = 10; 
$("#elem").trigger(e); 
+2

Code angezeigt wird, ohne Fehler zu laufen, aber das gewünschte Ergebnis (Positionierung Cursor innerhalb eines Inhalt editierbare div) auftritt nicht. Sendet diese Methode ein natives click() -Ereignis, als ob ich physisch auf diesen Ort geklickt hätte? Es scheint nicht so. Danke - – OneNerd

+0

@OneNerd - Es ist nicht, es ist nicht möglich, Ereignisse genau so zu simulieren, wie sie passieren, zumindest Cross-Browser. Was machst du mit dem Ergebnis, ist es ein Handler oder eine Imagemap? –

+1

nun, hier ist mein echtes Problem (siehe Link zu anderen Post). Ich dachte, das Auslösen eines click() Ereignisses könnte es lösen - aber anscheinend nicht: http://stackoverflow.com/questions/2844649/javascript-contenteditable-getting-setting-caret-position – OneNerd

-3

Die ".trigger()" Anruf akzeptiert ein "extraParameters" -Parameter, den Sie verwenden könnten, um die XY-Koordinaten zu stopfen, denke ich. Documentation

.trigger("click", [x, y]); 
+2

können Sie eine anonyme Funktion als zweiten Parameter des Aufrufs '.trigger' übergeben. Diese Funktion gibt eine Positionsfunktion mit den gewünschten oberen und linken Werten zurück. 'function() {this.position = function() {this.left = x; this.top = y; }; } ' –