2010-05-16 183 views
34

嘗試觸發(觸發)單擊事件。它很容易在jQuery中完成,但無法弄清楚如何設置事件的座標並將它們一起發送。在特定座標處觸發JavaScript click()事件

從本質上講,我需要觸發在特定位置的點擊(其被觸發()調用之前計算)。

任何方式做到這一點(jQuery的或其他方式)?

謝謝 -

回答

42

event object設置pageXpageY性質(這是歸一化),並將它傳遞到.trigger(),像這樣:

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

代碼似乎沒有錯誤運行,但是所期望的結果(定位內容的可編輯的div內光標)不出現。此方法是否發送了本地click()事件,就好像我物理地點擊了該位置?它並非如此。謝謝 - – OneNerd 2010-05-16 19:51:01

+0

@OneNerd - 它不是,不可能像事件一樣模擬事件,至少是跨瀏覽器。你對結果做什麼,它是一個處理程序還是圖像映射? – 2010-05-16 19:53:37

+1

好吧,這是我真正的問題(請參閱其他帖子的鏈接)。我認爲觸發click()事件可能會解決它 - 但顯然不是:http://stackoverflow.com/questions/2844649/javascript-contenteditable-getting-setting-caret-position – OneNerd 2010-05-16 19:55:31

-3

的 「.trigger()」 呼叫接受一個你可以使用「extraParameters」參數填充XY座標。 Documentation

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

你可以傳遞一個匿名函數作爲'.trigger'調用的第二個參數。該函數返回一個具有所需頂值和左值的位置函數。 'function(){this.position = function(){this.left = x; this.top = y; }; }' – 2014-05-03 03:35:55