jQuery offset() 没有按预期工作

标签 jquery html css jquery-ui

我是 stackoverflow 的新手,请原谅我关于代码格式的问题。 我的问题是我已经创建了一个自定义的右键单击菜单,它将显示在“tr”上。所有“tr”都是动态生成的,每次右键单击 ul 都与每个 tr 相关联以实现不同的功能。 offset() 有问题,每当我右键单击任何 tr 时,我得到的菜单位置仅相对于第一个 tr。但是右键单击菜单与我之前所说的不同。请帮忙。

$('.cuz-menu').bind("contextmenu", function (e) {
    e.preventDefault();
    var posX = $(this).offset().left, posY = $(this).offset().top;
    $(this).find('.right-click').css({ "top": e.pageY - posY + "px", "left": e.pageX - posX -        85 + "px" }).show(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>

最佳答案

问题似乎出在您对新的顶部和左侧值的计算上; pageY之间的区别和 offset().top对于每个 <tr>元素将是相同的。

假设您有四个 <tr>元素,每个高度为 50 像素。第一行的顶部偏移量为 400 像素,您右键单击它的中间位置。 pageY将为 425,顶部偏移量将为 400,因此新的顶部值为 25。

现在您将光标向下移动屏幕 100 像素,因此您位于第三行的中间位置。您右键单击该行。 pageY现在是 525,顶部偏移量现在是 500,但新的顶部值仍然是 25。

关于jQuery offset() 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18737829/

相关文章:

javascript - jquery日历操作问题

javascript - 引导网站卡在移动浏览器中

CSS 绝对中心

javascript - 具有垂直视差效果的 slider

javascript - CKFinder TypeError : t. event.special.swipe 未定义

javascript - 获取的 JSON 未填充到主干模型中

jquery - 动画部分图像 : is there a better alternative to animated GIF?

jquery - 删除子级并更改父级的 css 类

javascript - 在没有大量回调函数的情况下循环遍历列表元素上的相同动画

html - 如何将转换应用到显示为 :none? 的元素