操作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);
}