我试图弄清楚当有人右键单击图像时如何让 DIV 显示在鼠标的位置。一个例子可以在这里找到。
我四处搜索,发现以下代码...
$('img').bind('contextmenu', function(e){
return false;
});
这当然会阻止右键单击。虽然我不知道如何让 DIV 出现在鼠标点击的位置。
请问我可以指出正确的方向吗?
谢谢!</p>
我试图弄清楚当有人右键单击图像时如何让 DIV 显示在鼠标的位置。一个例子可以在这里找到。
我四处搜索,发现以下代码...
$('img').bind('contextmenu', function(e){
return false;
});
这当然会阻止右键单击。虽然我不知道如何让 DIV 出现在鼠标点击的位置。
请问我可以指出正确的方向吗?
谢谢!</p>
我整理了一个关于如何做到这一点的快速演示(在这里查看)。div 是绝对定位的,我们捕获contextmenu
事件,在该事件上我们根据对象中的和键preventDefault()
设置位置。div
pageX
pageY
event
JS 看起来像这样:
$('body').on('contextmenu', function(event) {
event.preventDefault();
$('div').css({
'top': event.pageY,
'left': event.pageX
});
});
CSS 看起来像这样:
body {
width: 500px;
height: 500px;
}
div {
width: 100px;
height: 100px;
background-color: #ccc;
position: absolute;
top: 0;
left: 0;
}
我已经在最新的 Firefox 和 Chrome 以及 IE7 - IE9 中测试了该演示,并且它在所有这些中都有效。希望这可以帮助。
您可以使用传递给处理程序的事件对象的offsetX
和属性,如下所示:offsetY
contextmenu
HTML:
<img src="http://mikecane.files.wordpress.com/2007/03/kitten.jpg" alt="click me, I'm a kitten!" id="picture" />
<div id="pictureCaption">Pretty picture of a kitten</div>
Javascript:
$('#pictureCaption').hide();
$('#picture').contextmenu( function(e) {
e.preventDefault();
$('#pictureCaption').offset( {top: e.offsetY, left:e.offsetX} ).show();
});
jsFiddle在这里:http: //jsfiddle.net/HFC5g/