簡易Dialog封裝

Mr清歌發表於2018-03-04

根據dialog要求,需要給markDialog、box標籤寫下樣式!!!

使用方法
// Dialog.show('提示內容',{
//     //配置資訊
//     isTap:true, //是否支援點選空白出讓彈出層消失
//     isAuto:2000,//是否支援自動消失,不支援傳遞0
//     callBack:function () {/回撥函式:提示消失的時候處理什麼事情
//         
//     }
// });

/*DIALOG*/
~function(){
    class Dialog{
        constructor(con='',{
            isTap=true,
            isAuto=2000,
            callBack=new Function()
        }={}){
            //把需要使用的掛載到例項上
            this.con=con;
            this.isTap=isTap;  //是否點選
            this.isAuto=isAuto;
            this.callBack=callBack;
            //建立提示層
            this.init();
        }
        init(){
            //1.建立一個彈出層結構
            this.createMark();

            //控制消失 自動消失
            if(this.isAuto!==0){
                this.autoTimer=setTimeout(()=>{
                    this.removeMark();
                    clearInterval(this.autoTimer);
                },this.isAuto);
            }
            //點選空白消失
            if(this.isTap){
                $('.markDialog').tap(e=>{
                   let target= e.target,
                       $target=$(target),
                        $par=$target.parent();
                        if($par.hasOwnProperty('box')) return;
                        this.removeMark();
                        clearInterval(this.autoTimer);
                })

            }

        }

        createMark(){
            let sectionBox=document.createElement('section');
                sectionBox.className='markDialog';
                sectionBox.innerHTML+=`<div class="box">
            <h3>系統提示</h3>
            <div class="content">${this.con}</div>
        </div>`;

            let container=document.querySelector('.mainBox')||document.body;
            container.appendChild(sectionBox);

            //把容器和建立的盒子掛載到例項上
            this.container=container;
            this.sectionBox=sectionBox;
        }

        removeMark(){
            if(!this.sectionBox||!this.container){
                return;
            }
            this.container.removeChild(this.sectionBox);
            this.sectionBox=null;
            this.callBack(this);
        }
        static show(...arg){
          return  new Dialog(...arg);
        
    }
    window.Dialog=Dialog;
}();
複製程式碼

相關文章