誰かが画像を右クリックしたときに、マウスの位置に DIV を表示する方法を理解しようとしています。例はここにあります。
私は周りを検索し、次のコードを見つけました...
$('img').bind('contextmenu', function(e){
return false;
});
もちろん、これは右クリックを防ぎます。マウスクリックの場所にDIVを表示する方法はわかりませんが。
正しい方向に向けてもらえますか?
ありがとう!</p>
誰かが画像を右クリックしたときに、マウスの位置に DIV を表示する方法を理解しようとしています。例はここにあります。
私は周りを検索し、次のコードを見つけました...
$('img').bind('contextmenu', function(e){
return false;
});
もちろん、これは右クリックを防ぎます。マウスクリックの場所にDIVを表示する方法はわかりませんが。
正しい方向に向けてもらえますか?
ありがとう!</p>
これを行う方法の簡単なデモ (ここで確認してください) をまとめました。contextmenu
div は絶対に配置され、イベントをキャプチャし、オブジェクトのとキーに基づいて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/