Javascript 打开和/或初始化jquery ui对话框的最佳实践

Javascript 打开和/或初始化jquery ui对话框的最佳实践,javascript,jquery,jquery-ui,dialog,Javascript,Jquery,Jquery Ui,Dialog,打开jquery对话框有两种方法: 1) 初始化对话框时设置autoOpen=true 2) 初始化后(使用autoOpen=false),调用$(“#id”).dialog(“open”) 目前,在我的代码中,每当用户单击按钮时,就会使用第一种方法打开一个模式对话框。在“确定”或“取消”时,对话框关闭$(此)。对话框(“关闭”) 每次单击时都使用autoOpen=true打开对话框,这是不是很糟糕?换句话说,在每次单击时重新初始化对话框是否很糟糕 从性能角度来看,每次单击时重新初始化对话框是否

打开jquery对话框有两种方法:

1) 初始化对话框时设置
autoOpen=true

2) 初始化后(使用
autoOpen=false
),调用
$(“#id”).dialog(“open”)

目前,在我的代码中,每当用户单击按钮时,就会使用第一种方法打开一个模式对话框。在“确定”或“取消”时,对话框关闭
$(此)。对话框(“关闭”)

每次单击时都使用autoOpen=true打开对话框,这是不是很糟糕?换句话说,在每次单击时重新初始化对话框是否很糟糕

从性能角度来看,每次单击时重新初始化对话框是否会导致诸如多次注册对话框事件之类的问题

jquery在这方面的最佳实践是什么

代码:


我通常在autoOpen设置为false时初始化对话框一次,然后在需要时“打开”对话框。如果需要,我可能会在打开之前更新对话框内容


如果出于某种原因,您确实觉得每次都需要重新初始化它,那么您至少应该首先使用“destroy”方法来避免引起问题和膨胀。

通过观察DOM,我注意到如果每次调用jquery ui对话框时都重新初始化,那么jquery ui对话框在DOM中注入的html元素不会重复。如果jQueryUI对话框DOM元素已经存在,那么只需重用它们

以下线程:


说明如果jquery事件已经存在,则不会在同一元素上多次注册它。例如,在我的场景中,如果每次调用都重新初始化jquery ui对话框,那么不会注册递增事件。

但是重新初始化真的会膨胀吗?我需要帮助来证明这一点。看起来它至少在页面中添加了额外的html:(虽然从那时起它可能在一年内发生了变化)是的,它添加了html,但它没有继续添加。如果它已经存在,它将重用它。就DOM而言,如果每次重新初始化jquery对话框,似乎不会产生任何影响。现在,我只是想知道对话事件。当多次调用重新初始化时,它们是否已注册多次?看起来不是这样,但很难说。我刚刚发现了这个stackoverflow帖子:jquery似乎没有为同一个元素多次注册相同的事件。这个链接谈到jquerydraggable,但我认为它适用于jquerydialog。所以,最后,如果我每次都重新初始化它,我还是安全的。这样代码行数就少了一点,即使这不是推荐的做法(一般来说,对于任何编程语言)。谢谢你的帮助,约翰。
$("#button").on("click",function(){

   $("#dialogHello").dialog({
      modal: true,
      autoOpen: true,
      buttons: [
        {   "text" : "Ok", "click" : function() { $(this).dialog("close"); } },
        {   "text" : "Cancel", "click" : function(){ $(this).dialog("close"); } }
      ]
   });

});