javascript - 如何在滚动后使用 jquery 检测精确的偏移量 top()?
问题描述
我有一个表,我想检测TR
点击位置的偏移顶部,这工作正常,但滚动页面后,这不能正常工作。为什么滚动 offset().top 改变后?如何解决?
$(function() {
$('tr').click(function() {
offsetTop = $(this).offset().top;
console.log(offsetTop);
});
});
.myDiv {
overflow-y: auto;
height: 250px;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<div class="myDiv">
<table class="table table-bordered">
<thead>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<tr>
<td>John</td>
<td>Doe</td>
<td>john@example.com</td>
</tr>
<tr>
<td>Mary</td>
<td>Moe</td>
<td>mary@example.com</td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>july@example.com</td>
</tr>
<tr>
<td>July 1</td>
<td>Dooley</td>
<td>july@example.com</td>
</tr>
<tr>
<td>July 2</td>
<td>Dooley</td>
<td>july@example.com</td>
</tr>
<tr>
<td>July 3</td>
<td>Dooley</td>
<td>july@example.com</td>
</tr>
<tr>
<td>July 4</td>
<td>Dooley</td>
<td>july@example.com</td>
</tr>
<tr>
<td>July 5</td>
<td>Dooley</td>
<td>july@example.com</td>
</tr>
<tr>
<td>July 6</td>
<td>Dooley</td>
<td>july@example.com</td>
</tr>
<tr>
<td>July 7</td>
<td>Dooley</td>
<td>july@example.com</td>
</tr>
<tr>
<td>July 8</td>
<td>Dooley</td>
<td>july@example.com</td>
</tr>
<tr>
<td>July 9</td>
<td>Dooley</td>
<td>july@example.com</td>
</tr>
<tr>
<td>July 10</td>
<td>Dooley</td>
<td>july@example.com</td>
</tr>
</tbody>
</table>
</div>
解决方案
您总是可以计算偏移量,并考虑滚动位置:
var offset_t = $(selector).offset().top - $(window).scrollTop();
var offset_l = $(selector).offset().left - $(window).scrollLeft();
推荐阅读
- python - 无法嗅探以太网类型 0x0102 自定义数据包
- php - 警告:mysql_fetch_array() 期望参数 1 是资源... - 为什么?
- c - 不使用 strlen() 函数计算字符串的长度
- c++ - 在取消引用向量时遇到问题
- indexing - 当一行被删除时,它不是物理删除,而是标记为已删除。太极数据
- vue.js - 在 Vue.js 中从 index.html 调用组件
- angular - Firebase 电子邮件验证电子邮件问题
- javascript - 传递带参数的函数时未触发单击事件
- javascript - TypeError: undefined is not an object , item is from an array from an API
- mysql - 如何使用mysql在距离搜索中将表与内连接联合起来