js绑定事件-(坑)

本文讨论了一个关于在JavaScript中使用事件绑定时遇到的问题,即同一个DOM元素被意外地绑定了两次click事件,导致在操作时出现意料之外的行为。通过分析代码并进行调试,作者最终找到了问题所在,并提供了修复方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天被自己绑定click事件坑了一下子,学浅乃危险之事。如果读书多了就不会犯这样的错误了。
如图 这里写图片描述
这样一个下拉框,点击“我选1”会生成一条“hello world!!!”,点“继续添加”则会继续添加。如果点击”我选2“也会像之前一样,首先把之前的记录清除掉,再生成一条,可以继续添加,一次生成一条”hello world!!!“

代码如下:

var nodeArea = '<div class="moOrRanArea" style="border:#000 solid 1px;margin:10px 0;">\
                            hello world!!!\
                        </div>';
        $("#moOrRan").change(function(){
            if(this.value!=0){
                $(".externalArea .moOrRanArea").remove();
                $(".externalArea").show().append($(nodeArea));
                $("#addArea").bind("click",function(){
                    $(".externalArea").append($(nodeArea));
                })

            }else{
                $(".externalArea").hide();
                $(".externalArea .moOrRanArea").remove();
            }

        })

看起来没啥问题,但是实际运行是有问题的,从”我选1“切换到”他选二“,刚切换过去是这样的:
这里写图片描述
我点一次”继续添加“就成这样了:
这里写图片描述
点击一次,增加了两条!!!
我考虑了半天。。。然后打断点各种试,发现

$("#addArea").bind("click",function(){
                    $(".externalArea").append($(nodeArea));
                })

从”我选1“切换到”他选2“的时候,每点击一次继续添加,这段代码执行了两边。原来是”$(“#addArea”)“,这个dom元素添加了两次click事件。

$("#addArea").unbind("click").bind("click",function(){...})

首先绑定unbind就搞定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值