1、關閉dialog的時候不銷毀。重新打開然后影響頁面的效果與樣式。
原因:
dialog的close()只是將html片段隱藏,並沒有銷毀移除。
解決方式:
打開dialog的時候在寫onClose回調處理:
onClose:function(){
$(this).dialog('destory').remove();
}
需要注意:
如果你的dialog的div是定義在html當中,當你關閉一次dialog之后會發現dialog打不開了,這是因為你的dialog已經被銷毀了。所以應該在創建dialog的時候使用克隆體或者在創建的時候新建div。如:
$('<div></div>').dialog({
id: 'newDialog',
href: "xxx",
onClose:function(){
$(this).dialog('destory').remove();
}
});
2、$.delegate綁定事件導致冒泡生成dialog的問題。
使用上面的方式解決了一個頁面的多個dialog的影響,但是另一個頁面同樣方式還是多個頁面出現,影響。於是調試。
定位問題出現在生成dialog代碼執行了多次。代碼如下:
$.delegate('#addDialogBtn', ''click', function(){
$('<div></div>').dialog({
id: 'newDialog',
...
});
})
通過js中彈出$("#addDialogBtn").size()為0,且在click中彈出次數為2判斷出是click事件走了兩次,但是不是因為多個頁面的原因。
定位到問題只會是出現在delegate方法。於是進行對應的查找
delegate有一個類似於預定的作用,但是delegate如果是在子頁面中使用的話會產生冒泡事件,也就是出發后在子頁面中執行一次,父頁面中又執行一次。
於是將delegate換成普通的$('#xx').click(function(){xxx});解決!