0
我有一個單張地圖2層,當我點擊按鈕「保存」時,點擊打開第二個對話框,它會打開一個對話框,其中一個表單一些informatons發到我數據庫。防止jQuery用戶界面上的按鈕
當我的第一層被選中,我點擊我的「保存」按鈕,它會打開對應我的第一層的對話框。
但是,當選擇了我的第二層,我點擊我的「保存」按鈕,將打開對應於我的第二層的對話框中,還我爲我的第一層之前打開的窗體。
那麼,是否有可能阻止這種形式的開放? 因爲如果我做.dialog('close'),它在表單上不對應,它可以工作,但我們可以看到它打開然後關閉,所以這不太好!
我已經測試過.dialog(「destroy」);和.remove();但它會刪除我在DOM中的對話框,並且以後我無法再打開它們。
所以,這裏是一些代碼:
//Code in the oneachfeature function from my layer1
$('#save').on('click',function(e){
var dialog1 = $("#dialog1").dialog({
autoOpen: false,
modal: true,
show: {
effect: "blind",
duration: 500
},
hide: {
effect: "blind",
duration: 500
},
close: function(event, ui) {
//$(this).dialog("destroy");
//$(this).dialog("close");
//$(this).remove();
},
height: 400,
width: 500,
modal: true,
position: {
my: "center center",
at: "center center",
of: "#map"
},
buttons: {
Valider: function() {
// Ajax to send informations in the form
}, // end of valider
Annuler: function() {
dialog1.dialog("close");
},
}, // end of buttons
}); // end of dialog
dialog1.dialog("open");
$("#dialog2").dialog('close');
}); // end of save
//Code in the oneachfeature function from my layer2
$('#save').on('click',function(e){
var dialog2 = $("#dialog2").dialog({
autoOpen: false,
modal: true,
show: {
effect: "blind",
duration: 500
},
hide: {
effect: "blind",
duration: 500
},
close: function(event, ui) {
//$(this).dialog("destroy");
//$(this).dialog("close");
//$(this).remove();
},
height: 400,
width: 500,
modal: true,
position: {
my: "center center",
at: "center center",
of: "#map"
},
buttons: {
Valider: function() {
// Ajax to send informations in the form
}, // end of valider
Annuler: function() {
dialog2.dialog("close");
},
}, // end of buttons
}); // end of dialog
dialog2.dialog("open");
$("#dialog1").dialog('close');
}); // end of save
是的,你說得對,如果我設置了獨特的ID,它的工作原理,但我想只有一個按鈕來做到這一點 – Hippipers
也許你可以嘗試「清理」點擊事件.off()方法:http://api.jquery.com/off/ –
另外,我建議你命名生成對話框的函數,並用參數來分解它。然後用.on()和.off()和命名函數的可讀性應該更好:) –