美文网首页
多元素同id时的事件绑定

多元素同id时的事件绑定

作者: 来碗鸡蛋面 | 来源:发表于2019-08-02 23:57 被阅读0次

原创声明

本文系作者辛苦码字所得,欢迎分享和转载,但请在明显位置注明作者的如下信息:
笔名:来碗鸡蛋面
简书主页:https://www.jianshu.com/u/4876275b5a73
邮箱:job_tom@foxmail.com
CSDN ID:tom_wong666

问题分析:

id作为识别元素的唯一标识,从语义上讲不应该出现共用现象,实际操作中如果有多个元素共用id也会造成意料之外的问题。
项目结构简单时,这样的错误一般不会出现,但是在结构复杂,又有大量重复功能出现时容易出现id重复现象。
实际操作中,今天有发现一个功能异常,A处和B处功能相同,而且A和B的父页面默认隐藏,都通过对应的点击事件触发弹窗显示,A处和B处的功能时好时坏,最终排查为id重复导致的,项目代码因为不能放出来,所以写了如下小demo来展示这个问题。

问题答案:

多元素同id时的事件绑定只在第一个元素生效

示例代码:

<html lang="zh-en">
    <head>
    </head>
    <body>
          <div id="tom">tom1</div>
          <div id="tom">tom2</div>
          <div id="tom">tom3</div>      
          <script>
                var tom =  document.getElementById('tom');
                tom.onclick = function() {
                    console.log(tom); 
                    // 点击tom1时输出 <div id="tom">tom1</div>
                    // 其他两个元素不触发该事件
                }
          </script>
    </body>
</html>

相关文章

  • 多元素同id时的事件绑定

    原创声明 本文系作者辛苦码字所得,欢迎分享和转载,但请在明显位置注明作者的如下信息:笔名:来碗鸡蛋面简书主页:ht...

  • jQuery事件代理绑定:delegate

    jQuery对于已有的元素绑定事件只要简单的 $("#id").bind('click',function(){/...

  • js事件委托

    DOM事件流:捕获=====》到达目标====》冒泡 将绑定在内部元素的事件,改为绑定到外层容器,当点击内部元素时...

  • angular阻止冒泡

    注:父元素和子元素都有click事件绑定,当点击子元素,希望执行子元素的事件而不执行父元素事件,在子元素事件开始时...

  • 小程序获取绑定事件元素的ID

    小程序list数据带值跳转,一般直接通过设置item的id来标识或者通过设置键值data-id的方式标识。 如下代...

  • js day22

    一、事件流 1.绑定事件 1)内联事件 //无限制第为元素绑定事件 2)事件监听 //无限制第为元素绑定事件 二、...

  • JavaScript事件

    事件分类 事件的绑定方法 通过标签绑定事件 通过js获取DOM元素绑定事件 通过addEventListener属...

  • event的target和currentTarget

    dom结构 vue代码 给父元素绑定了click事件,打印的时候。e.target.id有时会打印不出id。这时用...

  • web前端 -- Day20 js基础

    为元素绑定多个事件 绑定事件的区别事件绑定的方法: 相同点:都可以为事件绑定元素不同点: 方法名不一样; 参数个数...

  • 总结bind的几种用法

    绑定多个事件类型 比如可以为元素一次性绑定多个事件 当光标划入按钮时,class切换为highlight,移出时,...

网友评论

      本文标题:多元素同id时的事件绑定

      本文链接:https://www.haomeiwen.com/subject/gerddctx.html