javascript - click 适用于 jQuery 但不适用于 vanilla js
问题描述
如果我使用 jQuery 并单击该图标,它可以正常工作:
$(document).on('click', '.fileuploader-action-sort', function() {
alert('clicked');
});
但是如果我使用 vanilla js,我必须点击图标的最底部,就像在提示上一样,它才能真正起作用,否则在点击实际图标上的其他任何地方时什么都不会发生。
document.body.addEventListener("click", e => {
if (!e.target.matches(".fileuploader-action-sort")) return;
alert('clicked');
});
这是html:
<a class="fileuploader-action fileuploader-action-sort" title="Sort"><i></i></a>
我根据我拥有的数据库记录数生成图标,这就是我没有使用的原因document.querySelector('.fileuploader-action-sort');
解决方案
因为e.target
如果您单击 div,它指的是您的 vanilla js 示例中的整个文档,i
如果您单击其中的任何内容,它指的是标签。但在 jQuery 示例中,它指的是.fileuploader-action-sort
类。
注意到它的一种方法是console.log(e.target)
:
document.body.addEventListener("click", e => {
console.log(e.target)
if (!e.target.matches(".fileuploader-action-sort")) return;
alert('clicked');
});
<a class="fileuploader-action fileuploader-action-sort" title="Sort"><i>Test</i></a>
所以你需要听i
标签而不是类本身:
document.body.addEventListener("click", e => {
if (!e.target.matches(".fileuploader-action-sort i")) return;
alert('clicked');
});
<a class="fileuploader-action fileuploader-action-sort" title="Sort"><i>Test</i></a>
推荐阅读
- azure-active-directory - OnLoadevent JavaScipt 支持 Azure AD B2C
- node.js - 双击电子生成器打开时获取关联文件的路径
- makefile - 如何从具有不同目标的顶级 Makefile 调用一堆子目录 Makefile
- javascript - 如何使用 JavaScript 从 li 中的输入中获取值
- python - Pandas - 线图跳过 x 个标签
- javascript - 表格标题未出现在 javascript 中的排序中
- python - 已安装 Python3,但为什么我不能在终端中运行 python 文件
- google-sheets - 谷歌表格公式如何通过列参考查找唯一数据
- flutter - 在 adobe XD 中安装“XD to flutter”插件时出错
- sql - oracle按列求和而不使用联合