为了账号安全,请及时绑定邮箱和手机立即绑定

点击重复执行,这是js冒泡吗,怎么解决,如下图和代码,

点击重复执行,这是js冒泡吗,怎么解决,如下图和代码,

PHP
慕丝7291255 2019-03-18 02:57:19
如下 问题 刚开始two是隐藏的,点击one对应的two会显示,第一次点击two的时候,只会跳出一个alert(),重复点击就会递增的alrt(), 2次,3次...... 图片 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> .one { height: 100px; border-bottom: 1px solid #000; } .two { display: none; width: 50px; height: 20px; border: 1px solid #ccc; } </style> </head> <body> <div class="box"> <div class="box-item"> <div class="one"> one <div class="two">two</div> </div> </div> <div class="box-item"> <div class="one"> one <div class="two">two</div> </div> </div> <div class="box-item"> <div class="one"> one <div class="two">two</div> </div> </div> </div> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> <script> $('.box .box-item .one').click(function() { $(this).find(".two").show() $(this).find(".two").click(function() { alert($(this).html()); }) }) </script> </body> </html>
查看完整描述

4 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

  1. 这不是冒泡,这是重复绑定。
  2. DOM里的事件是这样的,你可以想象每个DOM结构有一张散列表,这张表一开始是空的,每次注册一个事件回调呢,就会把这个回调记到这个表上;而事件发生的时候呢,就会找到这个表,然后一个回调一个回调的去执行。
  3. 有个常见的误区,是以为每个DOM只有一个回调,事件发生时被触发执行,这是不对的。事实上,注册了一个回调就会执行一个,而注册了好几个,就会挨个执行。
  4. 题目中的错误也挺常见,是一个事件回调里边注册另一个事件回调,这样当外边的回调执行时,就会给里边的DOM上挂一个回调,执行多次以后,里边的回调也相应增多,这样在触发里边DOM的时候,就会有多个回调被执行,从而导致错误。
  5. 原生写法的注册事件其实可以拒掉具名函数事件回调的重复注册,但在jQ里,都是匿名函数/函数表达式,原生也防不住,从而变成了常见错误。
查看完整回答
反对 回复 2019-03-18
?
动漫人物

TA贡献1815条经验 获得超10个赞

$(this).find(".two").click(function(e) {
                e.stopPropagation();
                alert($(this).html());
            })
查看完整回答
反对 回复 2019-03-18
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

$('.box .box-item .one').click(function() {

    $(this).find(".two").show()
    $(this).find(".two").off();
    $(this).find(".two").click(function() {
        alert($(this).html());
    })
})
查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 446 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信