gpt4 book ai didi

javascript - 单击与单击传入元素

转载 作者:行者123 更新时间:2023-11-30 16:21:49 24 4
gpt4 key购买 nike

$(function(){
$('div').append('<a>link</a>');

$('a').click(function(){
alert('trigger <a>!');
});
});

https://jsfiddle.net/nj6Lsgo1/

为什么 <a>在我的情况下触发?我以为我必须使用像 .on() 这样的绑定(bind)用于传入元素。

最佳答案

Why does the <a> trigger in my case?

事件只是被触发,因为您附加了 click将 anchor 元素附加到 DOM 后事件监听器。

换句话说,$('a').click(function() {...});将附上 click所有的事件监听器 a当时存在于 DOM 中的元素。

a元素已经附加,click附加了事件监听器。

I thought I have to use binding like .on() for incoming elements

你只需要delegate the event listener如果您在 元素存在于 DOM 中之前附加事件监听器。

例如,如果您要颠倒逻辑并在附加事件监听器之后直接附加元素,那根本行不通:

// This wouldn't be fired since the element is 
// appended after the event listener is attached

$('a').click(function() {
alert('trigger <a>!');
});

$('div').append('<a>link</a>');

这就是为什么您需要将事件监听器委托(delegate)给当时确实存在于 DOM 中的祖先元素:

$('div').on('click', 'a', function() {
alert('trigger <a>!');
});

$('div').append('<a>link</a>');

关于javascript - 单击与单击传入元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34626065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com