2012-04-22 12 views
0

私はデータの行数が多い(300以上のテーブル行)データページを構築しました。 私はイメージを持っている各行で、HTML(コンテキストタイプメニュー)を含む小さなUIダイアログを起動します。 ビューポート内のトリガーイメージに問題がない場合は、いずれかをクリックします。 下にスクロールしてトリガーイメージをクリックすると、uiは、クリックした要素ではなく、ページの一番下に常に配置されます。UIダイアログ - pageX pageY位置

function showMenu(){ 
$("#modalMenu").dialog("open"); 
return false; 
} 
$(document).ready(function() { 
$('#modalMenu').dialog({autoOpen: false,modal: true,height: 200,width: 200}); 
$('.menu').click(function(e){$('#modalMenu').dialog('option', 'position', [e.pageX,e.pageY]);}); 
$('.menu').click(function(){showMenu();}); 
}); 



<div id="modalMenu"> 
    <a href="">Do Something</a> 
    <a href="">Do Something Else</a> 
</div> 


<img class="menu" src="images/menu trigger.jpg" /> 

** This image is in the first cell of every row 
+0

[jsFiddle](http://jsFiddle.net/)でデモを行いますか?あなたはテーブルの行について言及していますが、質問のサンプルコードはテーブルの行を示していません。それはさておき、私はこれが['.offset()'](http://api.jquery.com/offset/)が助けることができると思われる... – andyb

答えて

0

それがわかりました。 scrollTopをキャプチャし、e.pageYから差し引く必要があります。 スクロール後の位置を示します。

$('.menu').click(function(e){ 
    var y=$(window).scrollTop(); 
    $('#modalMenu').dialog('option', 'position', [e.pageX,(e.pageY-y)]); 
    });  
関連する問題