操作HTML子元素按钮,为父元素增加onclick事件遇到的坑

操作HTML子元素按钮,为父元素增加onclick事件时,会执行onclick事件问题


原因:为父元素设置onclick事件代码执行太快,导致点击子元素按钮为父元素设置事件时,同时引发了事件
解决方法:通过setTimeout方法延时执行


HTML代码

<td onclick="realNameEditState(this, 1)" id="userRealname1">
    <input id="realname1" value="张三">
    <a class="ml10 btn smallbtn btn-y" href="javascript:void(0)" onclick="updateRealName(1)">修改</a>
    <a class="ml10 btn smallbtn btn-y" href="javascript:void(0)" onclick="realNameTextState(1)">取消</a>
</td>

JavaScript代码

/**
 * 切换姓名为修改状态
 */
function realNameEditState(obj,id) {
    $(obj).removeAttr("onclick");
    console.log(1);
}
/**
 * 切换姓名为文本状态
 */
function realNameTextState(id) {
    $("#userRealname" + id).html($("#realname" + id).val());
    setTimeout(function () {
        $("#userRealname" + id).attr("onclick", 'realNameEditState(this, ' + id + ')');
    }, 1000);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。