开发者社区> 问答> 正文

父元素没有子元素的事件怎么用事件委托?

<ul>
    <li></li>
    <li></li>
    <li></li>
</ul>

例如我有一个这样的dom结构,我会根据用户的操作动态给li里面插入input[type="text"]标签。怎么监听这些input的change事件呢?感觉利用事件委托并不可行。

目前解决方案: 使用

展开
收起
杨冬芳 2016-06-08 16:46:39 1801 0
1 条回答
写回答
取消 提交回答
  • IT从业

    change事件在现代浏览器里是可以冒泡的,看这里,题主应该是不想让其冒泡,所以说让设置addEventListener的第三个参数为true就行了,让其在捕获阶段就处理事件。 demo

    另change事件是元素因为用户的输入使其value值会触发,失去焦点后执行。
    也就意味着直接给他们赋值导致的value改变不会触发change事件。
    赞同@开源无憾的看法,不要对change事件使用事件委托,因为按照规范change事件的使用对象为,个人感觉用事件委托不太合理。可以考虑循环绑定change事件
    伪代码如下:

    //动态创建input元素
    var inputs=ul.getElementsByTagName('input');
    for(var i=0,len=inputs.length;i<len;i++){
      if(inputs[i]){
        (function(index){
         inputs[index].onchage=function(){
           //do something
         }
        }(i);
      }
    }

    参考
    mdn change 事件
    司徒正美

    2019-07-17 19:32:19
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载