首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获得td元素相对父元素的偏移顶部?

如何获得td元素相对父元素的偏移顶部?
EN

Stack Overflow用户
提问于 2014-03-20 15:55:06
回答 2查看 4.5K关注 0票数 0

我有以下虚拟html标记:

代码语言:javascript
运行
复制
<table>
    <body>
       <tr>
         <td id="cell" style="height: 1000px; width: 200px;"></td>
       </tr>
    </body>
</table>

我需要订阅单击单元格上的事件并获取顶部偏移量相对父表行(tr)。

代码语言:javascript
运行
复制
jQuery('#cell', function (e) {
       // get top offset in pixels relative parent tr element
});

最好的办法是什么?

编辑:,我的意思是我需要鼠标单击偏移相对tr元素

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-20 16:30:20

假设我正确地理解了你的问题,这段代码就能做到这一点。它只输出相对于单元容器的x,y鼠标坐标。输出警报是由鼠标单击单元格触发的。

代码语言:javascript
运行
复制
o = $("#cell");
o.click(
    function (e) {        
        offsetX = e.pageX - o.position().left;
        offsetY = e.pageY - o.position().top;
        alert('offsetX: ' + offsetX + '\noffsetY:' + offsetY);
    }
);

http://jsfiddle.net/Dcudb/1/

票数 0
EN

Stack Overflow用户

发布于 2014-03-20 17:10:00

可能是这个..?

代码语言:javascript
运行
复制
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Documento senza titolo</title>
<style>
table{
  border-collapse:collapse;
  width:200px;
  position:relative;
}
table tr{width:200px;float:left;background-color:red;position:relative;}
table tr td{width:100px;background-color:red;}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    //if you want offset from tr
  $('td').click(function(){
       var leftParent=$(this).parent('tr').offset().left
       var topParent=$(this).parent('tr').offset().top
       var left=Math.round(($(this).offset().left)-leftParent);
       var top=Math.round(($(this).offset().top)-topParent)
       alert('top'+top+' left'+left)
      })
    //if you want offset from table  
  $('td').click(function(){
       var leftParent=$(this).parents('table').position().left
       var topParent=$(this).parents('table').position().top
       var left=Math.round(($(this).offset().left)-leftParent);
       var top=Math.round(($(this).offset().top)-topParent)
       alert('top'+top+' left'+left)
      })          

})
</script>
</head>
<body>
<table>
    <tr>
        <td class="cell">aaa</td>
        <td class="cell">bbb</td>
    </tr>
    <tr>
        <td class="cell">ccc</td>
        <td class="cell">ddd</td>
    </tr>
    <tr>
        <td class="cell">eee</td>
        <td class="cell">fff</td>
    </tr>
</table>
</body>
</html>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22538417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档