2

私はstackoverflowにまったく慣れていないため、コードのフォーマットについてご容赦ください。私の問題は、'tr' に表示されるカスタマイズされた右クリック メニューを作成したことです。オフセット () に問題があります。任意の TR を右クリックすると、最初の TR にのみ関連するメニュー位置が取得されます。しかし、前に言ったように、右クリック メニューは異なります。助けてください。

$('.cuz-menu').bind("contextmenu", function (e) {
    e.preventDefault();
    var posX = $(this).offset().left, posY = $(this).offset().top;
    $(this).find('.right-click').css({ "上": e.pageY - posY + "px", "左": e.pageX - posX - 85 + "px" }).ショー (0);
    

<tr class='right-content cuz-menu'>
         <td class="status ends-margin">
               <ul id=\"right-click\" class=\"right-click\">
                  <li>Diagram</li>
                  <li>Terminate</li>
                  <li>View Log</li>
               </ul>    
    <td class='rootProcess templates end-date'></td>
</tr>
4

2 に答える 2

1

問題は、新しい上と左の値の計算にあるようです。各要素pageYの とoffset().topforの違いは同じになります。<tr>

それぞれの高さが 50 ピクセルの4 つの<tr>要素があるとします。最初の行の上部のオフセットは 400 ピクセルで、右クリックするとちょうど半分になります。はpageY425 になり、上部のオフセットは 400 になるため、新しい上部の値は 25 になります。

ここで、カーソルを画面の 100 ピクセル下に移動すると、3 行目の途中になります。この行を右クリックします。はpageY525 になり、上部のオフセットは 500 になりましたが、新しい上部の値は 25 のままです。

于 2013-09-11T10:34:24.060 に答える
0

はい、TR 位置またはマウス位置のいずれかにメニューを配置する必要があります。それらの差ではなく、ほぼ一定です。

マウス (イベント) の位置は、多くの場合、右クリックに最適です。少し下と右に移動:

var menu = $(this).find('.right-click');
menu.css({"top": (e.pageY+10)+"px", "left": (e.pageX+10)+"px"});
menu.show(0);
于 2013-09-11T10:48:15.377 に答える