开发者问题收集

无法读取 jquery 中未定义的属性“replace”

2017-03-22
6989

我正在使用 deletecancelupdate 按钮进行内联编辑。当我尝试取消编辑时,它显示错误为 无法读取未定义的属性“replace”
我的代码有什么错误?

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个回答

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

修改您的函数

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

在内联点击处理程序中传递当前元素,如

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

更新 Fiddle

Satpal
2017-03-22

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

$(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/

Abdul Rafay
2017-03-22