为什么第二次点击时thisNode会获取两个对象?

第一次点击thisNode正常,第二次点击,thisNode会是两个对象,三次就是三个,是什么问题?

    $("#name,#qq,#tel,#email").click(function() {
    
            var thisNode = $(this).find(".name");
            console.log("-----");
            console.log(thisNode);
            console.log("-----");
            // var text = $(thisNode).text();//默认值
            // var bt = $(this).find(".bt").text();//标题
            $(".edit-mask,.edit_form .text").show();
            // $(".edit-title").text(bt);
            // $(".edit_form .text").val(text);
            $(".edit_form .ok").click(function() {
                // text = $(".edit_form .text").val();
                // console.log(text);
                console.log(thisNode);
                // $(thisNode).text(text);
                $(".edit-mask,.edit_form .text").hide();
            })
            $(".edit_form .cl").click(function() {
    
                $(".edit-mask,.edit_form .text").hide();
    
            })
    })

clipboard.png

阅读 3k
5 个回答

click回调不要嵌套着写。否则你每次点击$("#name,#qq,#tel,#email")都会注册一个$(".edit_form .ok")$(".edit_form .cl")的回调,所以只能是越点越多……

click事件里为什么还要套用click事件?如果事件的父元素是同一个就用事件委托写吧

很明显啊, 你的事件重复绑定了

因为你在点击事件中绑定事件回调了啊

你点多少下 "#name,#qq,#tel,#email"".edit_form .ok"就会有多少个事件处理函数

把里层的两个 click 事件绑定移出来,现在是 $("#name,#qq,#tel,#email") 每点击一遍就会绑定一遍

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题