dialog銷毀不干凈與彈出多個dialog問題


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});解決!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM