2

要素にmousedownイベント ハンドラーがあります。img

$('#some_image').bind({
    mousedown: function(e) {
        var img = e.target;
        var relpos = ???;
    }
  })

mousedown の相対 位置を取得するにはどうすればよいimgですか? 相対、つまりimgのいずれかのコーナーのうち、最も簡単な方へ。

FWIW、私はjQueryを使用しています。

(ばかげた質問でごめんなさい。答えは些細なことだと思いますが、見つけることができず、気が狂ってしまいます...)

編集:わかりました、ここに答えがあります:

$('#some_image').bind({
    mousedown: function(e) {
        var offset = $(this).offset();
        var relpos = [e.pageX - offset.left, e.pageY - offset.top];
        // etc.
    }
  })

実際、生のオフセットは常に整数であるとは限らないため、生のオフセットよりもMath.round(offset.left)andを減算する方がよいことがわかりました(図を参照)。Math.round(offset.top)

ところで、少なくとも Firebug によると、イベントのoffsetXoffsetYは定義されておらず、layerXlayerYはそのメンバーにリストされていません。

4

3 に答える 3

4

この投稿から答えを得ました jQuery get mouse position within a element

$("#something").click(function(e){
   var parentOffset = $(this).parent().offset(); 
   //or $(this).offset(); if you really just want the current element's offset
   var relX = e.pageX - parentOffset.left;
   var relY = e.pageY - parentOffset.top;
});
于 2012-12-03T02:13:07.803 に答える
1

layerX と layerY を使用できると思います。

$('#some_image').bind({
    mousedown: function(e) {
        var img = e.target;
        console.log(e.layerX+","+ e.layerY);
    }
});
于 2012-12-03T02:14:05.950 に答える
1

jQuery のイベント オブジェクトには、ドキュメントの左端に対するマウス ポインタの位置を返す pageX および pageY プロパティがあります。

したがって、クリックイベントでその位置を取得し、ターゲット要素の位置と比較するだけです。

公式の jQuery ドキュメントには、マウス位置の追跡に関する優れた例があります。

于 2012-12-03T02:15:10.830 に答える