简易JS插件开发,本文效果是一个简单的弹出层,意在记录插件的封装Demo。

完整源码压缩包:demo.rar

效果图(如下):

插件脚本:

/**
 * 节点配置属性方式配置参数:专业的做法是配置到,每一个需要初始化为插件的那个html标签的属性上面(这个属性的value必须是标准的json字符串),
 * 这样做的好处是,当存在多个需要初始化为插件的标签时,可以配置各自想要的参数
 * 例如:<div data-setting="{'param1':1,'param2':2}"></div>
 * Created by TonyZeng on 2016/7/6.
 */
/**前面的这个分号,用于避免其他插件没有分号闭合导致在压缩代码后导致语法的错误。*/
;(function ($) {
    /**这里相当于一个构造函数,当new Demo(demo)时,就会传递参数过来
     * 不过,我们没有采用new的方式来初始化插件,我们定义了一个init方法来初始化,在init方法中,我们用的其实也就是这个
     * 构造函数来初始化,init里面用each来循环初始化,将div节点对象(this)指针作为参数传入构造函数的参数列表
     */
    var Demo = function (demo) {
        var self = this;
        //保存节点对象,(获取自定义配置)getSetting方法会用它来获取节点里面的属性,比如自定义配置属性
        this.demo = demo;

        //默认配置
        this.setting = {"maskDivId": "xxx", "showDivId": "xxx", "closeButtonId": "xxx"};
        //用自定义配置merge默认配置
        $.extend(this.setting, this.getSetting());

        //事件绑定
        $(".demo").bind("click", function (e) {
            self.showdiv();
            //阻止事件冒泡出现(冒泡事件)
            e.stopPropagation();
        });
        $("#" + this.setting.closeButtonId).bind("click", function (e) {
                self.hidediv();
                //阻止事件冒泡出现(冒泡事件)
                e.stopPropagation();
            }
        );

    };
    Demo.prototype = {
        //获取自定义配置
        getSetting: function () {
            var setting = this.demo.attr("data-setting");
            //如果这个节点属性存在,并且不为空的话就转成json对象传出去
            if (setting && setting != null) {
                return $.parseJSON(setting);
            } else {
                return {};
            }
        },
        showdiv: function () {
            document.getElementById(this.setting.showDivId).style.display = "block";
            document.getElementById(this.setting.maskDivId).style.display = "block";
        },
        hidediv: function () {
            document.getElementById(this.setting.showDivId).style.display = 'none';
            document.getElementById(this.setting.maskDivId).style.display = 'none';
        }
    };
    //(当页面有多个地方需要初始化成插件时)为了避免用new的方式来初始化插件的繁琐,我们用一个init方法来专门处理初始化
    Demo.init = function (list) {
        //这个this指向Demo插件对象
        var _this_ = this;
        //用each循环初始化传入的元素为插件
        list.each(function () {
            //这个this指向each循环里面的元素对象
            new _this_($(this));
        });
    };
    //全局注册
    window["Demo"] = Demo;
})(jQuery);
$(function () {
    Demo.init($(".demo"));
});

HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>DIV CSS遮罩层</title>
    <link type="text/css" rel="stylesheet" href="demo.css"/>
</head>
<body>
<input id="btnshow" class="demo" type="button" value="Show"
       data-setting='{"maskDivId":"mask","showDivId":"show","closeButtonId":"btnclose"}'/>
<div id="mask">遮罩层</div>
<div id="show">
    <input id="btnclose" type="button" value="Close"/>
</div>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="demo.js"></script>
</body>
</html>

Css:

#mask {
    display: none;
    position: absolute;
    top: 0%;
    left: 0%;
    width: 100%;
    height: 100%;
    background-color: black;
    z-index:;
    -moz-opacity: 0.7;
    opacity: .70;
    filter: alpha(opacity=70);
}

#show {
    display: none;
    position: absolute;
    top: 25%;
    left: 22%;
    width: 53%;
    height: 49%;
    padding: 8px;
    border: 8px solid #E8E9F7;
    background-color: white;
    z-index:;
    overflow: auto;
}

Js插件开发的更多相关文章

  1. [js插件开发教程]一步步开发一个可以定制配置的隔行变色小插件

    隔行变色功能,不用js,直接用css伪类就可以做,这个实例可以作为js插件开发很好的入门级实例.本文实现的隔行变色包括以下功能: 1,支持2种常用结构共存( div元素 和 表格类型 ) 2,一个页面 ...

  2. [js插件开发教程]实现一个比较完整的开源级选项卡插件

    在这篇文章中,我实现了一个基本的选项卡功能:请猛击后面的链接>>   [js插件开发教程]原生js仿jquery架构扩展开发选项卡插件. 还缺少两个常用的切换(自动切换与透明度渐变),当然 ...

  3. react.js插件开发,x-dailog弹窗浮层组件

    react.js插件开发,x-dailog弹窗浮层组件 我认为,每一个组件都应该有他自带的样式和属性事件回调配置.所以我会给x-dialog默认一套简单的样式,和各种默认的配置项.所有react插件示 ...

  4. [js插件开发教程]原生js仿jquery架构扩展开发选项卡插件

    jquery插件一般是这么干的: $.fn.插件名称 = function(){}, 把插件的名称加在.fn上,在源码里面实际上是扩展到构造函数的原型对象上,如果你没看过jquery的源代码,或者你曾 ...

  5. [js插件开发教程]定制一个手风琴插件(accordion)

    本文带来一个垂直方向的手风琴插件开发,可以定制的功能如下: contentClass : 'panel', //面板样式navClass : 'nav', //导航样式activeClass : 'a ...

  6. 分享我对JS插件开发的一些感想和心得

    本文阅读目录: •起因•如何开发一个轻量级的适用性强的插件•总结 起因 如果大家平时做过一些前端开发方面的工作,一定会有这样的体会:页面需要某种效果或者插件的时候,我们一般会有两种选择: 1.上网查找 ...

  7. js插件开发的一些感想和心得

    起因 如果大家平时做过一些前端开发方面的工作,一定会有这样的体会:页面需要某种效果或者插件的时候,我们一般会有两种选择:1.上网查找相关的JS插件,学习其用法2.自己造轮子,开发插件. 寻找存在的插件 ...

  8. Vue.js插件开发

    Vue.js插件是为应用添加全局功能的一种强大而且简单的方式.插件的用途很广泛,从全局组件,到为应用添加一些额外的功能.如路由(Vue Router),存储在应用程序里的不可变数据(Vuex). 一般 ...

  9. Vue.js 插件开发详解

    前言 随着 Vue.js 越来越火,Vue.js 的相关插件也在不断的被贡献出来,数不胜数.比如官方推荐的 vue-router.vuex 等,都是非常优秀的插件.但是我们更多的人还只停留在使用的阶段 ...

随机推荐

  1. swiper入门之快速实现轮播--手机端

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. Spring+SpringMVC+MyBatis+easyUI整合基础篇(九)版本控制

    日常啰嗦 还好在第一篇文章里就列好了接下来的主线及要写的知识点,不然都不知道要写什么东西了,开篇里已经列了基础篇要讲svn和git的知识点,所以这一篇就写一下版本控制. 项目实际效果展示在这里,账密: ...

  3. android 仿摩拜单车共享单车进度条实现StepView

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6552712.html 先看效果图: Step1:定义StepBean 定义五个状态,分别为:为完成.正在进行 ...

  4. JavaWeb从0开始学(二)-----JSP基本语法与编译指令

    在上一节中我们学习了如何搭建一个简单的Web应用,并且已经知晓了一个JSP页面主要由静态的HTML内容和动态的Java脚本共同组成.JSP的基本语法共有JSP注释.JSP声明.输出JSP表达式与JSP ...

  5. 基于AGS JS开发自定义贴图图层

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.前言 假设一个景区有多张图片需要在地图上展示,并且随着地图的缩放而缩 ...

  6. TCP的连接和建立 图解

    前言 在没有理解TCP连接是如何建立和终止之前,我想你可能并不会使用connect,accept,close这三个函数并且使用netstat程序来调试应用.所以掌握TCP连接的建立和终止势在必行. 三 ...

  7. 基于Intranet的零件库管理信息系统设计--part02

    昨天建了第一个子表,今天继续. 按照这个一个一个来: 轴承参数查询如下(来源:轴承查询型号网) 照这个来大概就是这么几个属性: 轴承主键,轴承名称,新型号,旧型号,内径,外径,宽度,Cr,Cor(话说 ...

  8. Java:从面试题“i++和++i哪个效率高?"开始学习java字节码

    今天看到一道面试题,i++和++i的效率谁高谁低. 面试题的答案是++i要高一点. 我在网上搜了一圈儿,发现很多回答也都是同一个结论. 如果早个几年,我也会认同这个看法,但现在我负责任的说,这个结论是 ...

  9. 浅谈对java中传参问题的理解

    之前用的c/c++比较多,在c/c++中对于传参类型,无外乎就是传值.传引用.传指针这几种.但在java中,由于没有指针类型,其传参的方式也发生了相应的变化.在网上找了找,按我之前的理解,java中传 ...

  10. 请一定记得升级java虚拟机

    对于吃货出身又需要保持体重的我,出门一定要带男票,因为这样就可以把见到的好吃的都买给他吃,就当是自己吃了[汗].偶尔做梦还是会梦到自己一个角落里偷吃东西,听到有脚步声,抬起头,大哭起来:“我饿了.”  ...