jQuery $('body').on('click','. element')无法正常工作

mdfafbf1  于 2023-10-17  发布在  jQuery
关注(0)|答案(1)|浏览(169)

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 1element 2时,我在控制台中看到两个console.log()都已被触发。
为什么?为什么?

ee7vknir

ee7vknir1#

.on()的第二个参数并不是一个jQuery对象,而是一个CSS选择器字符串。尝试

$body.on('click', '.element1', function () {  
  console.log('element 1');
});

而不是.
原始表达式$('.element1')将被评估为“空”jQuery对象,如果像OP所说的那样,.element1元素是在稍后阶段动态生成的。

相关问题