【发布时间】:2021-01-18 13:16:57
【问题描述】:
我一直在尝试解决如何使用 JavaScript 将点击的元素绑定到函数的问题,经过很多天终于找到了@JerdineSabio 提供的解决方案here。我最初的问题是在Stackoverflow 提出的,它与处理许多按钮和执行语音识别的单个 JavaScript 脚本有关。将单击的按钮绑定到函数的代码是用 jQuery 编写的,涉及使用 function(e) 。 jQuery 语句接受 3 个参数,但在 JS 中,等效表达式只接受两个参数(事件(例如点击)和函数)。我查找了我所依赖的常用参考资料,但还没有找到用 Javascript 编写它的方法。我已经解决了脚本问题;所以我只想找到这个问题的答案,以防我将来只想使用 JS,因为我倾向于依赖 JS 而不是 jQuery,而且我之前也阅读过关于 function(e) 的内容并观看了关于Youtube 关于它,但我仍然不太明白“e”是什么以及它的作用。
下面的 jQuery 脚本可以正常工作。该代码更改了它旁边的按钮的颜色。同样,这涉及多个按钮,但它们只有一个脚本。
我试过了:
document.addEventListener("click", myFunction);
function myFunction(e) {
this.previousElementSibling.setAttribute("style", "background-color: gold") ...
....};
我又尝试了一些东西,但无论我尝试什么,我都无法使该功能正常工作。
HTML 是:
<div class="container">
<button id="first" type="button" class="btn btn-danger"></button>
<button id="first" type="button" class="btn btn-warning"></button>
</div>
jQuery 是:
$(document).ready(function(){
$(document).on("click", "#first", function(e) {
$(this).siblings().css("background-color", "gold");
});
});
【问题讨论】:
-
你有两个
id="first"。唯一标识符应该是唯一的。改用类 -
您需要使用document.querySelectorAll('#first') 找到要添加事件侦听器的元素。
-
我故意使两个按钮的 id 和 class 相同,因为我正在测试如何将单击的元素绑定到函数,而不使用
document.getElementById表达式。这个问题是一个更大的脚本的一部分,该脚本涉及许多功能并处理许多可以单击的按钮。我必须找到一种方法来识别单击的元素并在其他功能中使用。否则我不得不为每个按钮编写一个单独的 JS 脚本,我不想这样做。 -
jquery 正在使用事件委托——它将一个函数绑定到文档,然后当文档单击发生时,它会检查单击的内容是否与选择器匹配。该部分已覆盖here
标签: javascript html jquery