• 完美实现在同一个页面中使用不同样式的artDialog样式


          偶然发现artDialog.js这个插件,就被其优雅的设计及漂亮的效果深深吸引,在做例子时碰到了一些想当然它应该提供但却没有提供的功能,不过这都不影响我对它的喜爱,下面说一下遇到的问题吧!

          artDialog.js提供了好多种弹出框样式供我们使用,但我想在同一个页面中使用它提供的不同弹出框样式,遗憾的是artDialog.js并没有提供为每一个dialog指定样式的方法或属性,那怎么办呢?且看我下面的解决办法:

          我的思路是,既然每一个页面的Dialog样式都是由同一个CSS文件定义的,我何不通过动态改变它的CSS文件来实现我的需求呢!实验证明我的思路是正确的,且看我的实验代码:

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>artDialog-1</title>
    
        <link href="resources/skins/twitter.css" rel="stylesheet" />
        <script src="resources/jquery.min.js" language="javascript"></script>
        <script src="resources/jquery.artDialog.js" language="javascript"></script>
    </head>
       
    <body>
       
        <button type="button" onClick="popDialog1()">基础弹出框</button>
        
        
        <img src="resources/images/photo.jpg" style="60px; height:60px" onClick="popImg(this.src)" />
        
        
        
     <script language="javascript">
      
     //使用twitter风格的弹出框
      function popDialog1(){
          
            var dialog = $.dialog({
            title: '欢迎',
            content: '欢迎使用artDialog对话框组件!',
            icon: 'succeed',
            ok: function(){
                this.title('警告').content('请注意artDialog两秒后将关闭!').lock().time(2);
                return false;
            },
            button:[{name:'自定义按钮1',callback:function(){alert('自定义按钮1'); return false;}},{name:'button2',callback:function(){alert('button2');},focus:true}]
        });      
     }
     
     
     artDialog.notice = function (options) {
        var opt = options || {},
            api, aConfig, hide, wrap, top,
            duration = 800;
            
        var config = {
            id: 'Notice',
            left: '100%',
            top: '100%',
            fixed: true,
            drag: false,
            resize: false,
            follow: null,
            lock: false,
            init: function(here){
                api = this;
                aConfig = api.config;
                wrap = api.DOM.wrap;
                top = parseInt(wrap[0].style.top);
                hide = top + wrap[0].offsetHeight;
                
                wrap.css('top', hide + 'px')
                    .animate({top: top + 'px'}, duration, function () {
                        opt.init && opt.init.call(api, here);
                    });
            },
            close: function(here){
                wrap.animate({top: hide + 'px'}, duration, function () {
                    opt.close && opt.close.call(this, here);
                    aConfig.close = $.noop;
                    api.close();
                });
                
                return false;
            }
        };    
        
        for (var i in opt) {
            if (config[i] === undefined) config[i] = opt[i];
        };
        
        return artDialog(config);
    };
     
     
             
        function removeCss(filename){ 
            //判断文件类型 
            var targetelement="link"; 
            //判断文件名 
            var targetattr= "href"; 
            var allsuspects=document.getElementsByTagName(targetelement); 
            //遍历元素, 并删除匹配的元素 
            for (var i=allsuspects.length; i>=0; i--){ 
                if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1) 
                allsuspects[i].parentNode.removeChild(allsuspects[i]); 
            } 
            
            //alert(document.getElementsByTagName("head")[0].innerHTML);
        } 
    
    
         
         //查看图片时使用simple样式的弹出框
         function popImg(imgUrl){
             
               removeCss('twitter.css');
               
               //加载其他样式的dialog样式
               loadCss('resources/skins/simple.css');
               
               var obj = ' <img src="'+imgUrl+'" />';
               $.dialog({               
                   content:obj,
                   lock:true,
                   cancelVal:null,
                   close:function(){
                          removeCss('simple.css');
                           loadCss('resources/skins/twitter.css');
                       }
                   });
             
             }
    
    </script>
    
       
    </body>
    </html>

    代码解释:

          页面中有一个button和一个图片,点击button弹出twitter风格的dialog,点击图片弹出simple风格的dialog

  • 相关阅读:
    2015年北京大学软件project学科优秀大学生夏令营上机考试---C:单词翻转面试题
    跟我学Java多线程——线程池与堵塞队列
    Swift学习——类的定义,使用,继承,构造等(五)
    LNMP编译安装(centos7+nginx1.9+mysql5.6+php5.5)
    【iOS开发系列】九宫格布局
    出现异常时直接把e输出比输出e.getMessage()好得多
    往服务器上传个文件只要不到10毫秒,往数据库写条记录却要10秒
    使用struts的logic:iterate标签遍历列表时得到显示序号
    一次性上传多个文件到服务器端(一)
    Another MySQL daemon already running with the same unix socket的解决
  • 原文地址:https://www.cnblogs.com/angryprogrammer/p/3673708.html
Copyright © 2020-2023  润新知