javascript - 单击与单击传入元素

标签 javascript jquery

$(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/

相关文章:

javascript - 同时仅运行该函数一次

javascript - 在index.php中调用lightbox div进行用户注册

javascript - 等间距且对齐的水平列表菜单

javascript - HTML多选如果使用jquery选择第一项,如何取消全选

触发提交链接时 jquery 验证不起作用

javascript - 加载 Jquery Mobile 时未捕获类型错误 : Object function ( name, 基础、原型(prototype))

jquery - 如果复选框被选中,淡入淡出并更改背景图像

javascript - 在浏览器关闭时调用页面方法

javascript - 使用 Browserify 时是否可以对浏览器中不同的 JS 文件进行故障排除?

javascript - 如何提交表单,然后让页面刷新到页面上的那个点