首页 > 代码库 > 嵌套 click 第二层 click会叠加 导致 触发 多次

嵌套 click 第二层 click会叠加 导致 触发 多次

?
1
2
$("#appearHiddenDiv").click(function(){<br>    $("#hiddenDiv").css({display:"block"});<br>    $("#closeHiddenDiv").click(function(){    <br>    //alert("erhsh test");<br>    $("#hiddenDiv").css({display:"none"});    <br>        });
});

表面上这段代码挺合逻辑的,但是当在第二个click 中加入alert测试一下,会发现第一次点击关闭层时alert一次,但第二次开始就不止一次了:原因出在了,click事件被累积,然后作用于 $("#closeHiddenDiv") jq对象上。所以后面每操作一次,alert多一次。。。

解决方法是把click 分开写,如下:

$("#appearHiddenDiv").click(function(){
    $(
"#hiddenDiv").css({display:"block"});
    $(
"#closeHiddenDiv").click(function(){    
    
//alert("erhsh test");
    $("#hiddenDiv").css({display:"none"});    
});
});

 

?
1
2
3
4
$("#appearHiddenDiv").click(function(){
  $("#hiddenDiv").css({display:"block"});
});
<br>$("#closeHiddenDiv").click(function(){ <br>  //alert("erhsh test");<br>  $("#hiddenDiv").css({display:"none"});<br>});