2013-03-21 76 views
0

我在修改另一个系统约束问题。不理想,但..用全局范围创建mousedown事件

无论如何,我需要产生一个点击/触摸,然后找出最低的要点(300, 300)。我使用:

event = $.Event("mousedown", { pageX:300, pageY:300 }); 
$("window").trigger(event); 

然后我留神听:

$(window).bind 'mousedown', (jQueryEvent)-> 
    console.log jQueryEvent.target 

然而,event.target总是返回窗口。这是有道理的。但是,我正在尝试在整个页面上生成一个mousedown事件,然后使用event.target找出(pageX, pageY)下的哪个元素。有没有办法做到这一点?

回答

0

pageX和pageY在事件变量本身上,而不在目标上。但是他们被mousedown事件覆盖。你不需要创建这个事件,关闭工作得很好:

function hotspot (a, b) { 
    var x = a[0] || 0; 
    var y = a[1] || 0; 
    var w = b[0] || 0; 
    var h = b[1] || 0; 
    function between (x2, y2) { 
     return x2 >= x && 
      y2 >= y && 
      x2 <= (x + w) && 
      y2 <= (y + h); 
    } 
    return function (e) { 
     console.log("mouse x y:", e.pageX, e.pageY); 
     console.log("target x y w h:", x, y, w, h); 
     console.log(between(e.pageX, e.pageY)); 
    } 
} 
$(document).on('mousedown', hotspot([0,0], [300,300])); 

http://jsfiddle.net/gpaMz/1/

编辑:重新阅读你的问题,我只是不知道你想达到的目标。