javascript - 绑定(bind)到动态添加的内容而不使用 jquery?

标签 javascript

如果我动态向页面添加表单(无论是通过 AJAX 还是其他 JS),如何在页面加载的这些元素存在之前将事件监听器添加到它们?

我知道使用 jquery 绑定(bind)到父元素相当容易,如下所示:

$(document).on('blur', 'input', function() {...})

但我不清楚如何使用 vanilla JS 执行此操作,因为 addEventListener 必须直接应用于元素本身,并且无法指定事件应传播的父元素? (我想,对吧..?)

最佳答案

我会这样做。委派很简单。绑定(bind)到顶级父级。越近越好、越快。例如,如果您想在特定的 div 中委托(delegate)事件,那就更好了;避免冲突。将 event.target 与您要查找的目标进行比较,然后调用回调函数

document.addEventListener('blur', function(event){
  
  if(event.target.tagName == 'INPUT'){
      onInputBlur.apply(this, arguments);
  }

}, true);

function onInputBlur(event){
   
  // console.log(event); // event
  console.log(event.target.value);
  
}
<input type="text"/>
<input type="text"/>
<input type="number"/>

关于javascript - 绑定(bind)到动态添加的内容而不使用 jquery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39709597/

相关文章:

javascript - 通过按 Qwebview 外部的按钮将 javascript 注入(inject)到 Qwebview

javascript - 对于 node.js 中的路径中的值 "[object Object]",强制转换为未定义失败

javascript - 单击背景图像并链接到外部网站

javascript - TypeError : b. toLowerCase 不是 bootstrap typeahead 插件中的函数

javascript - "path"、 "type"、 "formatOptions"、 "constraints"代表什么数据绑定(bind)属性

javascript - 禁用 "hold press"以在移动设备上缩放

Javascript原型(prototype)检查区分 "function declaration"和 "function expression",为什么?

javascript - 如何处理网络请求失败错误?

javascript - 函数返回未定义而不是 bool 值。 BST, 力扣

javascript - 单独打印json元素