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

时间:2014-01-29 21:51:07

标签: javascript jquery jquery-ui dialog

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

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

2)初始化后(使用autoOpen = false),请致电$("#id").dialog("open");

目前,在我的代码中,只要用户单击按钮,就会使用第一种方法打开模式对话框。在“确定”或“取消”时,对话框将关闭$(this).dialog("close");

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

从性能角度来看,每次点击都会重新初始化对话框会导致多次注册对话框事件等问题吗?

jquery最佳实践是什么?

代码:

$("#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"); } }
      ]
   });

});

2 个答案:

答案 0 :(得分:1)

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

以下主题:

jQuery draggable - what happens if it is applied twice to an element?

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

答案 1 :(得分:0)

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

如果由于某种原因你确实觉得每次都需要重新启动它,那么你至少应该首先使用'destroy'方法来避免引起问题和膨胀。