2011-01-13 6 views
1

このデータに基づいてdivの左上と左のpx番号を設定する必要があります。どのようにこれを行うに行くことがありますか?ユーザーがJavascriptでボタンをクリックしたときにマウスカーソルの正確な位置を見つける方法は?

基本的に、ユーザーがこの要素をクリックすると、私はコンテンツを表示/非表示するshowcontent機能を持っています。しかし、私はカーソルの位置を見つけることによってトップを設定する必要があります

function ShowContent(d) { 
    document.getElementById(d).style.display = "block"; 
} 
+0

私は同じ質問のいくつかの既存の答えがあると感じました。なぜあなたは再び質問する前にそれらの答えを試してみませんか?さらに読むことを望むなら、これを試してみてください。 http://www.kvcodes.com/2014/03/get-exact-top-left-position-mouse-pointer-location-using-jquery/ – Kvvaradha

答えて

0

この例はjQueryのjavascriptライブラリに基づいています。

$("#button").click(function(e){ 
     alert("X is: "+e.pageX+" \n Y is:"+e.pageY); 
}); 

オンラインここにデモhttp://jsfiddle.net/pGdbD/1/

は、マウスがときあった場所あなたが見つけるために、イベントオブジェクトのevent.pageXevent.pageYプロパティを使用することができ、ボタンのさまざまな部分で

+0

質問がそのようにマークされている場合は、jqueryで答える必要があります。免責条項を追加します。 –

+0

が完全に同意すると、jQueryとしてタグ付けされていなかったことに気づいていませんでしたが、数分前に免責事項を追加しました。 – amosrivera

0

をクリックしてみてくださいイベントが開催されました。たとえば:

document.getElementById('yourDiv').addEventListener('click', function(event) { 
    console.log('X: ' + event.pageX + ' Y: ' + event.pageY); 
}); 

明らかにあなたの実際のコードは、例えば、IE用のattachEventを使用して、より複雑になりますが、これはどのように行うのをお見せなければなりません。


編集ファンはかなり当然のことを思い出すと、pageX/Yは、Internet Explorerで設定されていません。以下は、jQueryのソースコードから適応され、この問題ラウンド動作します:

function(event) { 
    var x, y; 

    if (event.pageX == null && event.clientX != null) { 
     var doc = document.documentElement, 
      body = document.body; 

     x = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); 
     y = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); 
    } else { 
     x = event.pageX; 
     y = event.pageY; 
    } 

    console.log('X: ' + x + ' Y: ' + y); 
} 
+0

pageX/YはIEには存在しません。スクロールにはclientX/Yとアカウントを使用する必要があります。 http://msdn.microsoft.com/en-us/library/ms535863(v=vs.85).aspx –

+0

@Juanあまりにも - 私にこれを思い出させるために多くのありがとう。回答が更新されました。 – lonesomeday

0

あなたはjqueryのか、別のlibを使用しない場合、あなたはそれクロスブラウザ処理するために、このページhttp://www.quirksmode.org/js/events_properties.htmlを見てする必要があります。これには、次のプロパティが含まれます。Event.clientXまたはEvent.pageX

それ以外の場合、jqueryのイベントにはpageXプロパティとpageYプロパティがあります。

ほとんどの図書館には、これを行うためのものがあります。

EXT-コアは:Event.getPageX()http://dev.sencha.com/deploy/dev/docs/source/EventManager.html#method-Ext.EventObject-getPageX

jqueryの:http://api.jquery.com/event.pageX/

+0

+1モードでは+1です。マウスの座標/イベントを把握しようとすると、非常に貴重なリソースです。 –

関連する問題