jQuery文档明确指出,当提供.element
时,它将监视选择器上的单击事件,但在我的情况下,它会触发我所有的.on('click')
代码,我不知道为什么。我目前使用的是最新的jQuery,v3.7.1,当从API接收数据时,元素会动态创建。
示例代码:
$(function() {
let $body = $('body'),
$element1 = $('.element1'),
$element2 = $('.element2');
$body.on('click', $element1, function () {
console.log('element 1');
});
$body.on('click', $element2, function () {
console.log('element 2');
});
});
当我单击element 1
或element 2
时,我在控制台中看到两个console.log()
都已被触发。
为什么?为什么?
1条答案
按热度按时间ee7vknir1#
.on()的第二个参数并不是一个jQuery对象,而是一个CSS选择器字符串。尝试
而不是.
原始表达式
$('.element1')
将被评估为“空”jQuery对象,如果像OP所说的那样,.element1
元素是在稍后阶段动态生成的。