Javascript 防止jquery ui在单击按钮时打开第二个对话框

Javascript 防止jquery ui在单击按钮时打开第二个对话框,javascript,jquery,jquery-ui,dialog,Javascript,Jquery,Jquery Ui,Dialog,我有一张两层的传单地图,当我点击“保存”按钮时,它会打开一个对话框,里面有一个表单,可以向我的数据库发送一些信息 当我的第一层被选中,我点击我的“保存”按钮时,它会打开与我的第一层对应的对话框 但是,当我的第二层被选中,我点击我的“保存”按钮时,它会打开与我的第二层对应的对话框,也会打开我刚刚为第一层打开的表单 那么,是否有可能阻止打开此表单? 因为如果我做一个.dialog('close'),它在表单上不是对应的,它可以工作,但我们可以看到它打开然后关闭,所以这不是很好 我已经测试过了;和。删

我有一张两层的传单地图,当我点击“保存”按钮时,它会打开一个对话框,里面有一个表单,可以向我的数据库发送一些信息

当我的第一层被选中,我点击我的“保存”按钮时,它会打开与我的第一层对应的对话框

但是,当我的第二层被选中,我点击我的“保存”按钮时,它会打开与我的第二层对应的对话框,也会打开我刚刚为第一层打开的表单

那么,是否有可能阻止打开此表单? 因为如果我做一个.dialog('close'),它在表单上不是对应的,它可以工作,但我们可以看到它打开然后关闭,所以这不是很好

我已经测试过了;和。删除();但是它会删除DOM中的对话框,以后我就不能再打开它们了

下面是一些代码:

//来自my layer1的oneachfeature函数中的代码
$('#save')。在('click',函数(e){
变量dialog1=$(“#dialog1”).dialog({
自动打开:错误,
莫代尔:是的,
展示:{
效果:“盲”,
持续时间:500
},
隐藏:{
效果:“盲”,
持续时间:500
},
关闭:功能(事件、用户界面){
//$(此).dialog(“销毁”);
//$(此).dialog(“关闭”);
//$(this.remove();
},
身高:400,
宽度:500,
莫代尔:是的,
职位:{
我的:“中心”,
在“中心”,
“地图”
},
按钮:{
Valider:function(){
//Ajax以表单形式发送信息
},//有效期结束
环空器:函数(){
对话1.对话(“关闭”);
},
},//按钮的结尾
});//对话框结束
对话1.对话(“打开”);
$(“#dialog2”).dialog('close');
});   // 保存结束
//my layer2中oneachfeature函数中的代码
$('#save')。在('click',函数(e){
变量dialog2=$(“#dialog2”).dialog({
自动打开:错误,
莫代尔:是的,
展示:{
效果:“盲”,
持续时间:500
},
隐藏:{
效果:“盲”,
持续时间:500
},
关闭:功能(事件、用户界面){
//$(此).dialog(“销毁”);
//$(此).dialog(“关闭”);
//$(this.remove();
},
身高:400,
宽度:500,
莫代尔:是的,
职位:{
我的:“中心”,
在“中心”,
“地图”
},
按钮:{
Valider:function(){
//Ajax以表单形式发送信息
},//有效期结束
环空器:函数(){
对话框2.对话框(“关闭”);
},
},//按钮的结尾
});//对话框结束
对话2.对话(“打开”);
$(“#dialog1”).dialog('close');

}); // 保存结束
对于每一层,您的两个保存按钮似乎具有相同的id。安装“onclick”侦听器时可能存在冲突?所以这种行为不是你所期望的。
尝试为这些按钮设置唯一的id

对于每一层,您的两个保存按钮似乎具有相同的id。在安装“onclick”侦听器时,可能存在冲突?所以这种行为不是你所期望的。
尝试为这些按钮设置唯一ID

是的,你是对的,如果我设置了唯一ID,它可以工作,但我只希望有一个按钮可以执行此操作。也许你可以尝试使用.off()方法“清除”单击事件:另外,我建议你命名生成对话框的函数,并使用参数对其进行分解。然后使用.on()和.off()以及命名函数,可读性应该更好:)因此,我尝试添加了
$('#save').off('click',函数(e){dialog1.dialog(“open”);})与第二层的dialog2相同,但仍然相同。也许我做错了,你有一个例子吗?嘿,我做了一个JSFIDLE来更清楚地了解off()函数的用法。可以通过匿名函数随意更改处理程序“showDialog”,就像我在comme中说的那样