javascript - 如何检测点击元素的右半部分和左半部分
问题描述
如何检测.targ
元素的右半部分或左半部分是否发生了点击?
$(document).on('click', '.targ', function(e) {
let targ = $(this);
let center = targ.width() / 2;
let x = '???'; // here I need clicked PositionX relative to targ
if (x > center) {
console.log('clicked right');
} else {
console.log('clicked left');
}
});
.parent {
text-align: center;
}
.targ {
display: inline-block;
text-align: center;
background: orange;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='parent'>
<div class='targ'>LOREM IPSUM</div>
</div>
解决方案
您可以从提供给事件处理程序的事件的offsetX
和属性中获取元素内单击位置的 X 和 Y 坐标。offsetY
然后您可以将其与您计算的中心点进行比较。尝试这个:
$(document).on('click', '.targ', function(e) {
let center = $(this).width() / 2;
if (e.offsetX > center) {
console.log('clicked right');
} else {
console.log('clicked left');
}
});
.parent {
text-align: center;
}
.targ {
display: inline-block;
text-align: center;
background: orange;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="parent">
<div class="targ">LOREM IPSUM</div>
</div>
推荐阅读
- git - 从 Azure DevOps UI 克隆 git 存储库启动 Visual Studio 2017 而不是 Visual Studio 2019
- c++ - 可以从 std::string 继承以提供类型一致性吗?
- rest - 我可以对所有方法都使用 POST 和 GET 吗?
- python - 当数据框的列名与 sql server 表列名不同时使用 sqlalchemy to_sql
- c++ - 运行时黑屏,没有错误
- android - 从其他片段更改 ViewPager 的当前片段
- r - 我们可以在 R Shiny 中跟踪系统日志记录和系统注销时间吗
- amazon-rds - 在新版本 @aws-cdk/aws-secretsmanager: 1.20.0 中,secretsmanager.AttachmentTargetType 的替代方案是什么?
- python - 是否存在操作员错误,因为执行后它说的是模棱两可的错误。我在做什么错误?
- c# - 检索具有 CLSID {00024500-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败 - 80080005