【问题标题】:How to close popup in jqueryjquery如何关闭弹窗
【发布时间】:2013-10-05 22:35:04
【问题描述】:

根据条件打开时如何关闭打开的弹出窗口。

看起来很奇怪,但我有要求,根据某些条件,如果它成为真的弹出应该自动关闭,怎么做?

我在document.ready 事件中返回.dialog("close"),但它不起作用。有什么想法吗?

更新

我发现问题是实际上弹出窗口已关闭,但在完成就绪事件后再次打开它。有什么帮助吗?

【问题讨论】:

  • 评估条件的代码,是在弹出窗口中还是在父窗口中?
  • @ThierryJ。它在弹出窗口中..
  • +1 >> 你的更新,虽然是一句废话,但让我解决了我的错误:)

标签: jquery jquery-ui-dialog


【解决方案1】:
if (condition){    
   $('dialog id').dialog('close');    
}

【讨论】:

    【解决方案2】:

    这应该在弹出窗口中完成工作:

    <script>
        $(function() {
            if (condition) {
                window.close();
            }
        });
    </script>
    

    【讨论】:

    • 我不想关闭窗口,我想关闭 jquery 对话框。
    【解决方案3】:

    这是一个旧帖子,但如果其他人遇到这个问题,我遇到了类似的问题,即使使用 jquery 弹出窗口也不会关闭

    $("#popup").dialog('close');

    根据同事的代码改编的解决方案是在脚本部分顶部有一个控制变量,并在我打开弹出窗口时将其设置为 1,并在我希望它关闭时将其重置为 0。此外,我从 pageLoad 上的 html 中删除了弹出窗口(仍在 javascript 中),如下所示:

    <script>
    <code>
      var $l = jQuery.noConflict();
      var cntDialog = 0;
    </code>
    
    function pageLoad(sender,args) {
      $l(function () {
        if (cntDialog == 0) {
          RemoveDialog();
        });
      }
    
    function initializeDialog(){
      $l("#popup").dialog({
        ...
        close: (function (sender,event) {
        RemoveDialog();
      })
    });}
    
    function RemoveDialog() {
      cntDialog = 0;
      $l("#popup").remove();
    }
    </script>
    

    希望对你有帮助

    【讨论】:

      【解决方案4】:

      您必须在服务器端脚本中添加一些标签,并且您必须在客户端设置事件侦听器以关闭弹出窗口。

      意味着您必须设置如下内容:

      parent.postMessage("CLOSE","*");  
      

      在服务器上。

      并设置侦听器客户端,如:

      var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
      var eventer = window[eventMethod];
      var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
      

      // 收听来自子窗口的消息

       eventer(messageEvent,function(e) {
          var key = e.message ? "message" : "data";
              var data = e[key];
          },false);
      

      我没有时间检查这个。希望对您有所帮助。

      或者我通过以下网址:

      https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage

      http://nyamsprod.com/blog/2012/introduction-to-window-postmessage/

      http://benalman.com/code/projects/jquery-postmessage/examples/iframe/

      我给定的代码来自 URL:

      Html5 - Cross Browser Iframe postmessage - child to parent?

      您可以在监听器中添加对话关闭代码。

      谢谢

      【讨论】:

        【解决方案5】:

        其中一个简单的解决方案可能是

        $('#dialog-close-btn').trigger('click') 
        

        您指向对话框关闭按钮的位置。

        【讨论】:

          【解决方案6】:

          $('.my-modal').hide() 将关闭该活动模式。

          【讨论】:

            【解决方案7】:

            如果是引导模式,可以使用下面的代码来显示/隐藏弹出窗口。

            $('#modal').modal('toggle');  //To show and hide
            
            if(condition) {
                $('#modal').modal('hide');  //To hide
            }
            
            $('#modal').modal('show');  //To show
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多