如何确定元素是否已配置对话框?

时间:2013-02-03 03:25:50

标签: jquery

以下是我想要做的一个示例。

<html>
<head>
    <script type="text/javascript" language="javascript">
      function doOpen() {
        if ($('#dialog-modal').dialog('widget') == '')
          document.getElementById('#dialog-modal').style.display = 'block';
        else    
          $('#dialog-modal').dialog('open');
      }

      function doClose() {
        if ($('#dialog-modal').dialog('widget') == '')
          document.getElementById('#dialog-modal').style.display = 'none';
        else
          $('#dialog-modal').dialog('close');
      }     

      function doAttach() {    
        $('#dialog-modal').dialog({
          width: 'auto',
          height: 'auto',
          title: 'Popup Dialog',
          autoOpen: false,
          resizable: false,
          modal: true
        });

        document.getElementById('dialog-modal').style.display = 'block';
      }
    </script>
</head>
<body>
<input type="button" id="Show" value="Open" onclick="doOpen();" />
<input type="button" id="Attach" value="Attach" onclick="doAttach();" />

<div id="dialog-modal" style="display:none">
Show this in a model dialog window<br />
<input type="button" id="Close" value="Close" onclick="doClose()" />
</div>
</body>
</html>

如果在执行任何其他操作之前单击“附加”,则对话框显示正常。但是如果我先点击“打开”,那么我就会收到错误。我需要知道这一行应该是什么,以确定对话框模式是否已附加到对话框

if ($('#dialog-modal').dialog('widget') == '')

2 个答案:

答案 0 :(得分:1)

告诉你要做什么有点难,但是你可以使用data()查看是否附加了对话框。

if ($('#dialog-modal').data('uiDialog')) {
  alert('dialog attached');
}

答案 1 :(得分:1)

大多数插件在目标html元素中添加了一些类和数据。您需要找出他们添加的类和数据,而不是保持条件 喜欢

if($('selector').hasClass('classAdded')){
//do something
}

或者

if($('selector').data('dataKey')){
//do something
}

对于课程,您可以在firebug屏幕或其他屏幕上看到。 要获取他们分配的数据,请使用

alert(JSON.stringify($(selector).data()));