jQuery UI对话框 - 检查是否存在实例方法

dmn*_*mnc 56 jquery-ui-dialog

我想使用instance方法来测试jQuery UI Dialog小部件是否已经初始化.关于API,这是可能的,但它对我不起作用:

Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method 'instance'

演示:http://jsfiddle.net/mDbV7/

更新:

这是文档中的一个错误,instance方法将从版本1.11.0获得,请参阅此问题.

jba*_*bey 90

最新版本的jQuery UI不再允许您对尚未初始化的项目调用UI方法.我刚刚将它们包装在if语句中,例如:

if ($("#divToBeDialoged").hasClass('ui-dialog-content')) {
    // do whatever
} else {
    // it is not initialized yet
}
Run Code Online (Sandbox Code Playgroud)

编辑:更改了班级名称,谢谢@dmnc

  • @pavian是正确的,``divToBeDialoged`获取类`ui-dialog-content`而不是'ui-dialog`. (2认同)

Dar*_*ndy 18

一旦你完成使用它们,清空和销毁对话框也是一个好习惯.我通常在每个对话框的close事件中使用此代码

$("#myDialog").dialog({
    // other options
    close: function(event, ui) {
        $(this).empty().dialog('destroy');
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的建议,而不是每次都询问实例中是否存在对话框,确保每个对话框都自行清理.


Fra*_*ank 5

您可以使用:

if($('#id').is(':ui-dialog')) {
}
Run Code Online (Sandbox Code Playgroud)

要么

if($('#id').is(':ui-dialog')) {
}
Run Code Online (Sandbox Code Playgroud)
    var obj = $('<div>test</div>').dialog();
    if (obj.is(':ui-dialog')) {
      alert('I\'m a dialog')
    }
Run Code Online (Sandbox Code Playgroud)