• dialog销毁不干净与弹出多个dialog问题


    1、关闭dialog的时候不销毁。重新打开然后影响页面的效果与样式。

    原因:

    dialog的close()只是将html片段隐藏,并没有销毁移除。

    解决方式:

    打开dialog的时候在写onClose回调处理:

    onClose:function(){

      $(this).dialog('destory').remove();

    }

    需要注意:

    如果你的dialog的div是定义在html当中,当你关闭一次dialog之后会发现dialog打不开了,这是因为你的dialog已经被销毁了。所以应该在创建dialog的时候使用克隆体或者在创建的时候新建div。如:

    $('<div></div>').dialog({

      id: 'newDialog',

      href: "xxx",

      onClose:function(){

        $(this).dialog('destory').remove();

      } 

    });

    2、$.delegate绑定事件导致冒泡生成dialog的问题。

    使用上面的方式解决了一个页面的多个dialog的影响,但是另一个页面同样方式还是多个页面出现,影响。于是调试。

    定位问题出现在生成dialog代码执行了多次。代码如下:

    $.delegate('#addDialogBtn', ''click', function(){

      $('<div></div>').dialog({

        id: 'newDialog',

        ...

      });

    })

    通过js中弹出$("#addDialogBtn").size()为0,且在click中弹出次数为2判断出是click事件走了两次,但是不是因为多个页面的原因。

    定位到问题只会是出现在delegate方法。于是进行对应的查找

    delegate有一个类似于预定的作用,但是delegate如果是在子页面中使用的话会产生冒泡事件,也就是出发后在子页面中执行一次,父页面中又执行一次。

    于是将delegate换成普通的$('#xx').click(function(){xxx});解决!

  • 相关阅读:
    hdu6393 Traffic Network in Numazu 树链剖分
    codeforces 1180E Serge and Dining Room 线段树
    codeforces 546E Soldier and Traveling 网络流
    E
    poj3207 Ikki's Story IV
    【2020牛客多校第二场】F Fake Maxpooling
    【2020牛客多校第一场】J Easy Integration
    【ICPC2015沈阳M】Meeting
    【 AtCoder Beginner Contest 169】C Multiplication 3
    【AtCoder Beginner Contest 169】B Multiplication 2
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/9233994.html
Copyright © 2020-2023  润新知