【发布时间】:2021-08-25 02:41:23
【问题描述】:
这看起来应该很容易解决。该代码允许用户单击标题、段落或图像,并识别元素的类型。它可以工作,但随后陷入无限循环。它似乎在继续尝试运行相同的代码。我阅读了很多类似的问题,但使用 .one 或其他方法的建议没有奏效。
$(document).ready(function() {
const elementsToMatch = ['h1', 'p' , 'img']
const elementsMessage = ['This is a heading', 'This is a paragraph' , 'This is an image']
$('*').click(function(e) {
const target = $(e.target)
elementsToMatch.forEach(function(element, index) {
if (target.is(element, index)) {
alert(elementsMessage[index]);
};
});
});
【问题讨论】:
-
你查看this 的帖子了吗?
-
根据@swati 的链接,我尝试了
.off()、.one()和.unbind(),但在我到达.stopPropagation()和event.stopImmediatePropagation()之前没有任何效果 -
我不明白为什么传播会导致点击事件重复 3 次,尽管页面上有多少元素(尽管点击背景只会产生一个事件)。
-
@Kinglish 使用 ``` $('*').click(function(e) { event.stopPropagation()``` 确实有效。非常感谢
-
这能回答你的问题吗? jQuery click events firing multiple times
标签: jquery arrays alert infinite-loop