无法在jquery中读取未定义的属性'replace'

时间:2017-03-22 05:58:29

标签: jquery

我正在使用deletecancelupdate按钮进行内联编辑。当我尝试取消编辑时,其显示错误为Cannot read property 'replace' of undefined
我的代码中有什么错误?

function editCancel(id) {
    var cancelId = $(this).attr('id');
    $("#" + cancelId).hide();
    var number = cancelId.replace("editCancel", "");
    $("#update" + number).hide();
    $("#edit" + number).show();
    $("#delete" + number).show();

}

https://jsfiddle.net/zs0hqv3e/

2 个答案:

答案 0 :(得分:3)

问题区域是函数中的this,它指的是 window 对象而不是调用该函数的按钮。

修改你的功能

function editCancel(elem) {
    var cancelId = $(elem).attr('id');
    //rest of code
} 

将内容点击处理程序中的当前元素传递给

<button class="btn editCancel btn-danger" onclick="editCancel(this)"></button>

Update Fiddle

答案 1 :(得分:1)

使用事件委派将绑定事件绑定到动态添加的元素。

$(document).on('click', ".editCancelAction", function (){
  //Your code.
  var cancelId = $(this).attr('id');
  $("#" + cancelId).hide();
  var number = cancelId.replace("editCancel", "");
  $("#update" + number).hide();
  $("#edit" + number).show();
  $("#delete" + number).show();
});

更新小提琴:https://jsfiddle.net/zs0hqv3e/4/