Html要素に次のイベントハンドラーがあります。
jQuery("#seek-bar").click(function(e){
var x = e.pageX - e.target.offsetLeft;
alert(x);
});
クリック時に#seek-bar上のマウスの位置を見つける必要があります。私は上記のコードが動作するはずだと思っていただろうが、それは間違った結果を与える
マウスポインターrelative
の位置を要素(または)の単純なマウスポインターの位置に取得しようとしていますか?
このデモを試してください: http://jsfiddle.net/AMsK9/
1)event.pageX
、event.pageY
は、マウスの相対的なドキュメントを提供します!
Ref: http://api.jquery.com/event.pageX/
http://api.jquery.com/event.pageY/
2)offset()
:要素のオフセット位置を提供します
Ref: http://api.jquery.com/offset/
3)position()
:要素の相対的な位置、つまり、
要素が別の要素の中に埋め込まれていると考えます
example:
<div id="imParent">
<div id="imchild" />
</div>
Ref: http://api.jquery.com/position/
HTML
<body>
<div id="A" style="left:100px;"> Default <br /> mouse<br/>position </div>
<div id="B" style="left:300px;"> offset() <br /> mouse<br/>position </div>
<div id="C" style="left:500px;"> position() <br /> mouse<br/>position </div>
</body>
JavaScript
$(document).ready(function (e) {
$('#A').click(function (e) { //Default mouse Position
alert(e.pageX + ' , ' + e.pageY);
});
$('#B').click(function (e) { //Offset mouse Position
var posX = $(this).offset().left,
posY = $(this).offset().top;
alert((e.pageX - posX) + ' , ' + (e.pageY - posY));
});
$('#C').click(function (e) { //Relative ( to its parent) mouse position
var posX = $(this).position().left,
posY = $(this).position().top;
alert((e.pageX - posX) + ' , ' + (e.pageY - posY));
});
});
$('#something').click(function (e){
var Elm = $(this);
var xPos = e.pageX - Elm.offset().left;
var yPos = e.pageY - Elm.offset().top;
console.log(xPos, yPos);
});
これを試して:
jQuery(document).ready(function(){
$("#special").click(function(e){
$('#status2').html(e.pageX +', '+ e.pageY);
});
})
ここでは、さらに多くを見つけることができます info DEMO
MouseEvent.offsetX がブラウザによって サポート である場合(すべての主要なブラウザが実際にサポートしています)、jQuery イベントオブジェクト にこのプロパティが含まれます。
MouseEvent.offsetX読み取り専用プロパティは、そのイベントとターゲットノードのパディングエッジの間のマウスポインターのX座標のオフセットを提供します。
$("#seek-bar").click(function(event) {
var x = event.offsetX
alert(x);
});
パーセンテージ:
$('.your-class').click(function (e){
var $this = $(this); // or use $(e.target) in some cases;
var offset = $this.offset();
var width = $this.width();
var height = $this.height();
var posX = offset.left;
var posY = offset.top;
var x = e.pageX-posX;
x = parseInt(x/width*100,10);
x = x<0?0:x;
x = x>100?100:x;
var y = e.pageY-posY;
y = parseInt(y/height*100,10);
y = y<0?0:y;
y = y>100?100:y;
console.log(x+'% '+y+'%');
});
こちらをご覧ください リンクの説明をここに入力してください
html
<body>
<p>This is a paragraph.</p>
<div id="myPosition">
</div>
</body>
css
#myPosition{
background-color:red;
height:200px;
width:200px;
}
jquery
$(document).ready(function(){
$("#myPosition").click(function(e){
var Elm = $(this);
var xPos = e.pageX - Elm.offset().left;
var yPos = e.pageY - Elm.offset().top;
alert("X position: " + xPos + ", Y position: " + yPos);
});
});