javascript - 使用最接近()比较元素与点击事件的距离
问题描述
我有各种元素可以触发相同的功能。我需要能够获得两种不同类型的类的壁橱元素。
在我只为每个 onClick 事件提供一个函数之前,尽管我希望它们共享同一个函数,而只是将 current_dragging_element 更改为最接近我正在寻找的两种类型的类的元素。
current_dragging_element = event.target.closest(".draggable_list");
current_dragging_element = event.target.closest(".draggable_item");
async function onMouseDown(event) {
if (HANDLE THE CHANGE IN VAR?) {
current_dragging_element = event.target.closest(".draggable_list");
}
else {
current_dragging_element = event.target.closest(".draggable_item");
}
document.body.classList.add("noselect")
current_dragging_element.style.transform = "rotate(5deg)";
current_dragging_element.style.left = event.clientX - 20
current_dragging_element.style.top = event.clientY - 20
current_dragging_element.classList.add("drag");
current_dragging_element.style.position = "fixed";
current_dragging_element.style.zIndex = 999;
}
这就是我所拥有的,但是它还不能正常工作。有任何想法吗?
解决方案
Element.closest()
像 CSS 选择器一样工作,就像querySelector()
. 您可以在单个字符串中添加多个类,并首次遇到其中一个元素。
请参见下面的示例。
const entries = document.querySelectorAll('.entry');
entries.forEach(entry => {
const closest = entry.closest('.draggable_list, .draggable_item');
console.log(closest);
});
<!-- draggable item is the closest -->
<div class="draggable_list">
<div class="draggable_item">
<div class="entry"></div>
</div>
</div>
<!-- draggable list is the closest -->
<div class="draggable_list">
<div class="entry"></div>
</div>
推荐阅读
- android - 科尔多瓦闪屏不显示
- python - 如何让我的不和谐机器人对表情符号做出反应
- c# - Oracle OpenAsync 等...不是真正的异步方法吗?
- highcharts - highcharts - 自定义图例宽度
- ios - SwiftUI:在 LazyVGrid 中显示可变长度字符串
- c# - 无法加载文件或程序集“SeleniumExtras.WaitHelpers”
- bash - Bash 打印除第一个以外的所有参数 - print 返回文件名
- hyperledger-fabric - 在自定义超级账本结构 2.2 中生成排序块创世纪时出错
- windows - 程序启动后扫描文件
- javascript - Laravel - Javascript 编码 html 字符串