Js插件开发
简易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插件开发的更多相关文章
- [js插件开发教程]一步步开发一个可以定制配置的隔行变色小插件
隔行变色功能,不用js,直接用css伪类就可以做,这个实例可以作为js插件开发很好的入门级实例.本文实现的隔行变色包括以下功能: 1,支持2种常用结构共存( div元素 和 表格类型 ) 2,一个页面 ...
- [js插件开发教程]实现一个比较完整的开源级选项卡插件
在这篇文章中,我实现了一个基本的选项卡功能:请猛击后面的链接>> [js插件开发教程]原生js仿jquery架构扩展开发选项卡插件. 还缺少两个常用的切换(自动切换与透明度渐变),当然 ...
- react.js插件开发,x-dailog弹窗浮层组件
react.js插件开发,x-dailog弹窗浮层组件 我认为,每一个组件都应该有他自带的样式和属性事件回调配置.所以我会给x-dialog默认一套简单的样式,和各种默认的配置项.所有react插件示 ...
- [js插件开发教程]原生js仿jquery架构扩展开发选项卡插件
jquery插件一般是这么干的: $.fn.插件名称 = function(){}, 把插件的名称加在.fn上,在源码里面实际上是扩展到构造函数的原型对象上,如果你没看过jquery的源代码,或者你曾 ...
- [js插件开发教程]定制一个手风琴插件(accordion)
本文带来一个垂直方向的手风琴插件开发,可以定制的功能如下: contentClass : 'panel', //面板样式navClass : 'nav', //导航样式activeClass : 'a ...
- 分享我对JS插件开发的一些感想和心得
本文阅读目录: •起因•如何开发一个轻量级的适用性强的插件•总结 起因 如果大家平时做过一些前端开发方面的工作,一定会有这样的体会:页面需要某种效果或者插件的时候,我们一般会有两种选择: 1.上网查找 ...
- js插件开发的一些感想和心得
起因 如果大家平时做过一些前端开发方面的工作,一定会有这样的体会:页面需要某种效果或者插件的时候,我们一般会有两种选择:1.上网查找相关的JS插件,学习其用法2.自己造轮子,开发插件. 寻找存在的插件 ...
- Vue.js插件开发
Vue.js插件是为应用添加全局功能的一种强大而且简单的方式.插件的用途很广泛,从全局组件,到为应用添加一些额外的功能.如路由(Vue Router),存储在应用程序里的不可变数据(Vuex). 一般 ...
- Vue.js 插件开发详解
前言 随着 Vue.js 越来越火,Vue.js 的相关插件也在不断的被贡献出来,数不胜数.比如官方推荐的 vue-router.vuex 等,都是非常优秀的插件.但是我们更多的人还只停留在使用的阶段 ...
随机推荐
- background-image 与 img 动画性能对比
开发H5常常会用到滑屏,目前大部分滑屏插件都是通过控制页面的transform属性来实现.尽管如此,我总是发现自己的H5滑动起来就是不如网上一些优秀案例流畅,表现为滑动动画会出现卡顿.跳帧. 后来我发 ...
- 3-15 JS基础知识02
一.For循环: For (var i = 0; i <= 10; i++){ 循环体: } 注意:For循环中的表达式是可以省略的,省略以后是个死循环. odd:奇数 even : 偶 ...
- .NET Core中的包、元包与框架
本文为翻译文章,原文:Packages, Metapackages and Frameworks .NET Core是一个由NuGet包组成的平台.一些产品受益于细粒度包的定义,也有一些受益于粗粒度包 ...
- Jdom读取XML文件
学习Spring时,我们经常看到很多xml配置文件,Spring通过在配置文件中的配置,使用IOC(控制反转),从而实现代码的灵活性,本篇我就为大家介绍一种解析xml方式--Jdom 首先我们到Jdo ...
- Apache网页的缓存时间
配置网页缓存时间概述 通过mod_expires模块配置Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求,减轻服务端工作压力. 启用mod_expires模块后,会自动生成页面头部信息 ...
- iOS用户行为追踪——无侵入埋点
本文章系作者原创文章,如需转载学习,请注明该文章的原始出处和网址链接. 在阅读的过程中,如若对该文章有不懂或值得优化的建议,欢迎大家加QQ:690091622 进行技术交流和探讨. 前言: 前几日 ...
- pip --upgrade批量更新过期的python库
pip --upgrade批量更新过期的python库 python pip 转载请标明出处:marsggbo网易博客http://blog.163.com/hexin_mars_blog/blog/ ...
- Java 异常处理 try catch finally throws throw 的使用和解读(一)
//最近的一个内部表决系统开发过程中,//发现对异常处理还存在一些模棱两可的地方,//所以想着整理一下//主要涉及到://1.try catch finally throws throw 的使用和解读 ...
- 深入分析Java单例模式的各种方案
单例模式 Java内存模型的抽象示意图: 所有单例模式都有一个共性,那就是这个类没有自己的状态.也就是说无论这个类有多少个实例,都是一样的:然后除此者外更重要的是,这个类如果有两个或两个以上的实例的话 ...
- 深入学习 DUBBO
1.什么是 RPC 协议? RPC 的全称是 Remote Procedure Call 是一种进程间通信方式.它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显 ...