2010-05-16 66 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