Jquery 更新数据时增量弹出警报

Jquery 更新数据时增量弹出警报,jquery,object,dynamic,bootstrap-modal,unbind,Jquery,Object,Dynamic,Bootstrap Modal,Unbind,我有一个动态按钮来编辑对象的一些数据。现在,一旦数据更新成功,我将向用户发送一个警报,说明它已成功完成 但是,当用户第二次编辑同一对象时,它会两次抛出相同的警报。同样,当同一对象第三次更新时,会更新三次,以此类推 我相信,我需要解除动态按钮上单击事件的绑定以修复此问题,并确保每次编辑对象时仅弹出一次警报 此外,请注意,默认情况下,工具名称和工具url不是选项字段,但如果填写了工具名称和工具url中的任何一个,则必须填写 如何在下面的代码中解除“.edit btn”按钮上单击事件的绑定 var

我有一个动态按钮来编辑对象的一些数据。现在,一旦数据更新成功,我将向用户发送一个警报,说明它已成功完成

但是,当用户第二次编辑同一对象时,它会两次抛出相同的警报。同样,当同一对象第三次更新时,会更新三次,以此类推

我相信,我需要解除动态按钮上单击事件的绑定以修复此问题,并确保每次编辑对象时仅弹出一次警报

此外,请注意,默认情况下,工具名称和工具url不是选项字段,但如果填写了工具名称和工具url中的任何一个,则必须填写

如何在下面的代码中解除“.edit btn”按钮上单击事件的绑定

var myData=[{
公司:“ABC”,
网址:“www.abc.com”,
类型:“内部”
}, {
公司名称:“CDE”,
网址:“www.cde.com”,
类型:“内部”
}, {
公司:“DEF”,
网址:“www.def.com”,
toolName:“reportTool”,
工具URL:“http://www.toolURL.com",
类型:“外部”
}, {
公司名称:“EFG”,
网址:“www.efg.com”,
类型:“内部”
}, {
公司:“FGH”,
网址:“www.fgh.com”,
类型:“外部”
}];
$('#createData')。单击(函数(){
createDisplay();
});
函数createDisplay(){
$('.container').empty();
myData.forEach(函数(obj){
$('.container')。追加(
$('').addClass('box').append(
$('').text('公司网站:'),
$('').addClass('compUrl').attr('href',obj.url).text(obj.company),
obj.type='external'?$('
').addClass('edit-btn').text('edit').attr({'data-toggle':'modal','data target':'#updateData'}):' ) ) }); } var objIndex; $(文档)。在('单击','上。编辑btn',函数(){ objIndex=$(this.parents('.box').index(); var$toolName=$(“#newToolName”); var$toolURL=$(“#newToolUrl”); 变量$toolInputs=$($toolName).add($toolURL); $toolInputs.on('change',函数(e){ var toolName=$toolName.val(); var toolURL=$toolURL.val(); $toolInputs.prop('required',toolName | | toolURL); }); $('#updateForm')。提交(函数(e){ var toolName=$toolName.val() var toolURL=$toolURL.val() var toolFilled=!!toolName&&!!toolURL; var toolUnfilled=!toolName&&!toolURL; 如果(工具已填充| |工具未填充){ 更新数据(objIndex); 返回false; } 返回false; }); }); 函数更新数据(索引){ companyName=$('#companyName').val(); companyUrl=$('#companyUrl').val(); toolName=$('#newToolName').val(); toolURL=$('#newToolUrl').val(); var upObj={ 公司名称:companyName,, 网址:companyUrl, toolName:toolName, toolURL:toolURL, 类型:“外部” } 拼接(索引1,upObj); log(myData[index]); createDisplay(); 警报(“数据更新成功!”); }
.box{
高度:100px;
背景色:天蓝色;
边框:1px纯黑;
边缘顶部:5px;
}

创建div
&时代;
接近
更新数据
公司名称
网站
工具名称
工具URL
接近
保存更改

您可以为以下类解除单击事件的绑定:

$(document).off('click', '.edit-btn');

它将
解除绑定
'一起附加的上一个事件侦听器。编辑btn'
您可以解除类的单击事件绑定,如:

$(document).off('click', '.edit-btn');

它将
解除绑定
一起附加的上一个事件侦听器。编辑btn'
删除
。编辑btn
单击事件,其中包含更改事件和提交事件,因此每次单击
时事件都会绑定。编辑btn

var myData=[{
公司:“ABC”,
网址:“www.abc.com”,
类型:“内部”
}, {
公司名称:“CDE”,
网址:“www.cde.com”,
类型:“内部”
}, {
公司:“DEF”,
网址:“www.def.com”,
toolName:“reportTool”,
工具URL:“http://www.toolURL.com",
类型:“外部”
}, {
公司名称:“EFG”,
网址:“www.efg.com”,
类型:“内部”
}, {
公司:“FGH”,
网址:“www.fgh.com”,
类型:“外部”
}];
$('#createData')。单击(函数(){
createDisplay();
});
函数createDisplay(){
$('.container').empty();
myData.forEach(函数(obj){
$('.container')。追加(
$('').addClass('box').append(
$('').text('公司网站:'),
$('').addClass('compUrl').attr('href',obj.url).text(obj.company),
obj.type==“外部”?$(“
”).addClass('edit-btn').text('edit').attr({ “数据切换”:“模式”, “数据目标”:“更新数据” }) : '' ) ) }); } objIndex=$(this.parents('.box').index(); var$toolName=$(“#newToolName”); var$toolURL=$(“#newToolUrl”); 变量$toolInputs=$($toolName).add($toolURL); $toolInputs.on('change',函数(e){ var toolName=$toolName.val(); var toolURL=$toolURL.val(); $toolInputs.prop('required',toolName | | toolURL); }); $('#updateForm')。提交(函数(e){ var toolName=$toolName.val() var toolURL=$toolURL.val() var toolFilled=!!toolName&&!!toolURL; var toolUnfilled=!toolName&&!toolURL; 如果(工具已填充| |工具未填充){ 更新数据(objIndex); 返回false; } 返回false; }); 函数更新数据(索引){ companyName=$('#companyName').val(); companyUrl=$('#companyUrl').val(); toolName=$('#newToolName').val(); toolURL=$('#newToolUrl').val(); var upObj={ 公司名称:companyName,, 网址:companyUrl, toolName:toolName, toolURL:toolURL, 类型:“外部” } 拼接(索引1,upObj); log(myData[index]); createDisplay(); 警报(“数据更新成功!”); }
.box{
高度:100px;
背景色:天蓝色;
边框:1px纯黑;
页边空白: