一个简单的jQuery插件开发实例

两年前写的一个简单的jQuery插件开发实例,还是可以看看的:

<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript">
(function($){
    // 为指定节点添加遮盖效果
    var methods = {
            Documents : {},
            Options : {},
            Show : function(){
                // 配置参数
                var defaults = {
                        zIndex : 9990, // 层高
                        opacity : 0.7, // 透明度
                        bgColor : "#000", // 背景色
                        bgImg : "", // 背景图
                        fixSpace : [0,0,0,0], // 补偿四边的像素 顺序:上右下左
                        callback : $.noop  // 显示输出后的回调函数, 第一个参数为当前 cover 的 jQuery 对象 function(cover){}
                    };
                var settings = $.extend({}, defaults, this.Options);

                var getFixSpace = function(index){
                        if (typeof settings.fixSpace === "number") return settings.fixSpace;
                        return settings.fixSpace[index] ? settings.fixSpace[index] : 0;
                    }

                this.Documents.each(function(){
                        var $this = $(this);
                        var cover = $this.find(".my-ui-cover-wrapper");
                        if (cover.size() < 1) {
                            cover = $('<div class="my-ui-cover-wrapper"><div class="my-ui-cover"></div></div>');

                            // 设置渲染样式并输出到页面
                            cover.css({ position:"relative", margin:0, padding:0, float:"none", fontSize:0, lineHeight:0 }).prependTo($this)
                                .find(".my-ui-cover")
                                .css({ position:"absolute", zIndex:settings.zIndex, backgroundColor:settings.bgColor, backgroundImage:"url("+ settings.bgImg +")" })
                                .fadeTo(0, settings.opacity);
                        }

                        // 显示输出后的回调函数
                        if (typeof settings.callback === "function") settings.callback(cover);

                        // 动态适应窗口大小
                        var setPosition = function(){
                                var top = $this.css("paddingTop").replace("px", "")*-1 + getFixSpace(0);
                                var left = $this.css("paddingLeft").replace("px", "")*-1 + getFixSpace(3);
                                var width = $this.width() + left*-1 + $this.css("paddingRight").replace("px", "")*1 + getFixSpace(1);
                                var height = $this.height() + top*-1 + $this.css("paddingTop").replace("px", "")*1 + getFixSpace(2);
                                cover.find(".my-ui-cover").css({ top:top, left:left, width:width, height:height });
                            };
                        $(window).resize(setPosition); setPosition();
                    });

                return this.Documents;
            },

        // 移除指定节点下的全部遮盖效果
        Remove : function(callback){
                this.Documents.find(".my-ui-cover-wrapper").fadeOut(function(){
                        $(this).remove();
                        typeof callback === "function" ? callback() : "";
                    });
            }
    }

    // 遮盖插件
    $.fn.Cover = function(options){
            methods.Documents = this;
            methods.Options = options;
            return methods;
        };
})(jQuery);

$(function(){
    $("body").Cover({
            bgImg : "http://yuyan.ai9475.com/front/templates/yuyan/styles/style2/image/line_bg.png",
            callback : function(cover){
                    cover.click(function(){ $(this).fadeOut() });
                }
        })
        .Show();
    setTimeout(function(){
            $("body").Cover().Remove(function(){ alert("yes"); });
        }, 1000);
});
</script>

可以对任何一个或多个容器进行遮盖,还未进行完整测试可能存在一些小问题

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

原文发表于:2012/08/03 23:07

时间: 2024-09-24 13:40:40

一个简单的jQuery插件开发实例的相关文章

php实现的一个简单json rpc框架实例

 这篇文章主要介绍了php实现的一个简单json rpc框架实例,本文给出了RPC服务端和客户端代码以及应用实例,需要的朋友可以参考下     json rpc 是一种以json为消息格式的远程调用服务,它是一套允许运行在不同操作系统.不同环境的程序实现基于Internet过程调用的规范和一系列的实现.这种远程过程调用可以使用http作为传输协议,也可以使用其它传输协议,传输的内容是json消息体. 下面我们code一套基于php的rpc框架,此框架中包含rpc的服务端server,和应用端cl

一个简单的jQuery计算器实现了连续计算功能_jquery

一个简单的jQuery计算器,只是实现了一个连续计算的功能 <!DOCTYPE html> <html> <head> <meta charset="utf8"/> <title>Javascript计算器</title> </head> <body> <table> <tr> <td colspan="4"><input id=

自己封装的一个简单的倒计时功能实例_javascript技巧

因为平常工作中很常用到该功能,所以就利用这次国庆假期,重新梳理与对原有代码进行改善,再集成一个常用的功能,最终封装出这个"简单倒计时"功能. 该倒计时方法具有以下该功能: 1. 根据指定日期与当前的电脑时间进行匹配 2. 通过指定一个数组参数,来设置在每一天内不同的时间段进行倒计时. * 该方法还未通过实际工作的检测,稳定性未知(如果实际工作通过,会删除这段话) function countDown(date,target,filter){ var setTime = new Date

一个简单的JavaScript Map实例(分享)_javascript技巧

用js写了一个Map,带遍历功能,请大家点评下啦. //map.js Array.prototype.remove = function(s) { for (var i = 0; i < this.length; i++) { if (s == this[i]) this.splice(i, 1); } } /** * Simple Map * * * var m = new Map(); * m.put('key','value'); * ... * var s = ""; *

[WCF REST] 一个简单的REST服务实例

微软在WCF 3.5中就通过提供基于Web HTTP的编程模式使我们很容易地创建基于REST的服务,WCF 4.0中对此进行了较大的改进.为了让读者对REST在WCF中的应用有一个大致的了解,我们先来进行一个简单的实例演示. [源代码从这里下载] 一.定义服务契约 在这个实例中,我们创建一个简单的服务来管理员工的基本信息.至于实例程序的结构,我们依然采用熟悉的包含三个项目(Service.Interface.Service和Client)的解决方案.如下所示的是定义在Service.Interf

使用MongoDB和JSP实现一个简单的购物车系统实例_JSP编程

本文介绍了JSP编程技术实现一个简单的购物车程序,具体如下: 1 问题描述 利用JSP编程技术实现一个简单的购物车程序,具体要求如下. (1)用JSP编写一个登录页面,登录信息中有用户名和密码,分别用两个按钮来提交和重置登录信息. (2)编写一个JSP程序来获取用户提交的登录信息并查询数据库,如果用户名为本小组成员的名字且密码为对应的学号时,采用JSP内置对象的方法跳转到订购页面(显示店中商品的种类和单价等目录信息):否则采用JSP动作提示用户重新登录(注:此页面上要包含前面的登录界面). (3

一个简单的Servlet注册实例

   我们在利用Servlet进行web开发的时候 ,运行的不是 JSP页面 而实际上是一个  Java类的对象  .这个类的对象从 javax.sevlet.http.HttpServlet ;这个类是基于HTTP的 Servlet类 我们自己写的 Servlet应该从 这个类派生而来 . 通过我们自己编写的类 以及对web.xml的部署  ,进行web的流程控制 ,实现用户与服务器的交互 . 要注意在 编写Servlet进行相应客户端的时候 我们在调用  Response.setConten

使用Node.js实现一个简单的FastCGI服务器实例_node.js

本文是我最近对Node.js学习过程中产生的一个想法,提出来和大家一起探讨. Node.js的HTTP服务器 使用Node.js可以非常容易的实现一个http服务,最简的例子如官方网站的示例: 复制代码 代码如下: var http = require('http');http.createServer(function (req, res) {    res.writeHead(200, {'Content-Type': 'text/plain'});    res.end('Hello Wo

一个简单的jQuery插件制作 学习过程及实例_jquery

一,首先,制作jQuery插件需要一个闭包 复制代码 代码如下: (function ($) { //code in here })(jQuery); 这是来自jQuery官方的插件开发规范要求,使用这种编写方式有什么好处呢? a) 避免全局依赖. b) 避免第三方破坏. c) 兼容jQuery操作符'$'和'jQuery ' 二,有了闭包,在其中加入插件的骨架 复制代码 代码如下: $.fn.dBox = function (options) { var defaults = { //各种属性