/**
 * jquery tips 提示插件 jquery.tips.js v0.1beta
 *
 * 使用方法
 * $(selector).tips({   //selector 为jquery选择器
 *  msg:'your messages!',    //你的提示消息  必填
 *  side:1,  //提示窗显示位置  1,2,3,4 分别代表 上右下左 默认为1(上) 可选
 *  color:'#FFF', //提示文字色 默认为白色 可选
 *  bg:'#F00',//提示窗背景色 默认为红色 可选
 *  time:2,//自动关闭时间 默认2秒 设置0则不自动关闭 可选
 *  x:0,//横向偏移  正数向右偏移 负数向左偏移 默认为0 可选
 *  y:0,//纵向偏移  正数向下偏移 负数向上偏移 默认为0 可选
 * })
 *$("#dname").tips({
                 side:3,
               msg:'输入属性名',
                  bg:'#AE81FF',
                  time:2
             });
 *
 */
 (function ($) {
     $.fn.tips = function(options){
         var defaults = {
             side:1,
             msg:'',
             color:'#FFF',
             bg:'#F00',
             time:2,
             x:0,
             y:0
         }
         var options = $.extend(defaults, options);
         if (!options.msg||isNaN(options.side)) {
         throw new Error('params error');
     }
     if(!$('#jquery_tips_style').length){
         var style='<style id="jquery_tips_style" type="text/css">';
         style+='.jq_tips_box{padding:10px;position:absolute;overflow:hidden;display:inline;display:none;z-index:10176523;}';
         style+='.jq_tips_arrow{display:block;width:0px;height:0px;position:absolute;}';
         style+='.jq_tips_top{border-left:10px solid transparent;left:20px;bottom:0px;}';
         style+='.jq_tips_left{border-top:10px solid transparent;right:0px;top:18px;}';
         style+='.jq_tips_bottom{border-left:10px solid transparent;left:20px;top:0px;}';
         style+='.jq_tips_right{border-top:10px solid transparent;left:0px;top:18px;}';
         style+='.jq_tips_info{word-wrap: break-word;word-break:normal;border-radius:4px;padding:5px 8px;max-width:130px;overflow:hidden;box-shadow:1px 1px 1px #999;font-size:12px;cursor:pointer;}';
         style+='</style>';
         $(document.body).append(style);
     }
         this.each(function(){
             var element=$(this);
             var element_top=element.offset().top,element_left=element.offset().left,element_height=element.outerHeight(),element_width=element.outerWidth();
             options.side=options.side<1?1:options.side>4?4:Math.round(options.side);
             var sideName=options.side==1?'top':options.side==2?'right':options.side==3?'bottom':options.side==4?'left':'top';
             var tips=$('<div class="jq_tips_box"><i class="jq_tips_arrow jq_tips_'+sideName+'"></i><div class="jq_tips_info">'+options.msg+'</div></div>').appendTo(document.body);
             tips.find('.jq_tips_arrow').css('border-'+sideName,'10px solid '+options.bg);
             tips.find('.jq_tips_info').css({
                 color:options.color,
                 backgroundColor:options.bg
             });
             switch(options.side){
                 case 1:
                     tips.css({
                         top:element_top-tips.outerHeight()+options.x,
                         left:element_left-10+options.y
                     });
                     break;
                 case 2:
                     tips.css({
                         top:element_top-20+options.x,
                         left:element_left+element_width+options.y
                     });
                     break;
                 case 3:
                     tips.css({
                         top:element_top+element_height+options.x,
                         left:element_left-10+options.y
                     });
                     break;
                 case 4:
                     tips.css({
                         top:element_top-20+options.x,
                         left:element_left-tips.outerWidth()+options.y
                     });
                     break;
                 default:
             }
             var closeTime;
             tips.fadeIn('fast').click(function(){
                 clearTimeout(closeTime);
                 tips.fadeOut('fast',function(){
                     tips.remove();
                 })
             })
             if(options.time){
                 closeTime=setTimeout(function(){
                     tips.click();
                 },options.time*1000);
                 tips.hover(function(){
                     clearTimeout(closeTime);
                 },function(){
                     closeTime=setTimeout(function(){
                         tips.click();
                     },options.time*1000);
                 })
             }
         });
         return this;
     };
 })(jQuery);

案例二:

 (function($){
     $.fn.shadow = function(opts){
         //定义的默认的参数
         var defaults = {
             copies: 5,
             opacity:0.1,
             //回调函数
  copyOffset:function(index){
                 return{x:index,y:index};
             }
         };
         //将opts的内容合并到default中。
         var options = $.extend(defaults,opts);
         return this.each(function(){
             var $originalElement  = $(this);
             //设置参数对象
             for(var i=0;i<options.copies;i++)
             {
                 var offset = options.copyOffset(i);
                 $originalElement
                 .clone()
                 .css({
                     position:'absolute',
                     left:$originalElement.offset().left + offset.x,
                     top:$originalElement.offset().top + offset.y,
                     margin:0,
                     zIndex:-1,
                     //设置参数对象
                     opacity:options.opacity
                 })
                 .appendTo('body');
             }
         });
     };
 })(jQuery);
 $(document).ready(function(){
     $('h1').shadow({
         copies:5,
         copyOffset:function(index){
         return {x:-index,y:-2 * index};
         }
     });
 });

关于jquery插件模板的两个案例的更多相关文章

  1. jQuery插件主要有两种扩展方式

    jQuery插件主要有两种扩展方式: 扩展全局函数方式. 扩展对象方法方式. 扩展全局函数方式 扩展全局函数方式定义的插件,即类级别插件,可以通过jQuery.extend()来进行定义.定义格式为: ...

  2. jQuery 插件模板

    1.为每一个DOM对象创建一个插件对象 模板定义: (function($) { $.pluginName = function(element, options) { var defaults = ...

  3. 我最喜欢的jQuery插件模板

    我使用jQuery已经有相当长的时间了,并且我会常常为它写一些插件(plugin).我尝试过用不同的方式去写,现在这个模板是我最喜欢的: 1 2 3 4 5 6 7 8 9 10 11 12 13 1 ...

  4. JQuery插件模板

    (function($){ $.fn.插件名 = function(settings){ var defaultSettings = { } /* 合并默认参数和用户自定义参数 */settings ...

  5. 简记 jQuery 插件模板

    /** * @lisence jquery plugin demo v1.0.0 * * author: Jeremy Yu * * description: * this is a jquery p ...

  6. jQuery插件编写及链式编程模型小结

    JQuery极大的提高了我们编写JavaScript的效率,让我们可以愉快的编写代码,做出各种特效.大多数情况下,我们都是使用别人开发的JQuery插件,今天我们就来看看如何把我们常用的功能做出JQu ...

  7. 2013年优秀jQuery插件

    今天为大家推荐的是2013年的第一期,在这期里面十个jQuery插件涵盖了响应式的网格布局插件.图片放大插件.表单元素中自定义select插件,google 地图插件.文件拖放上传插件.tooltip ...

  8. jQuery插件编写及链式编程模型

    jQuery插件编写及链式编程模型小结 JQuery极大的提高了我们编写JavaScript的效率,让我们可以愉快的编写代码,做出各种特效.大多数情况下,我们都是使用别人开发的JQuery插件,今天我 ...

  9. 【最新】2015年7月之15个最新jQuery插件

    Hello,一个激动人心的好消息,现在我为大家整理最近7月发布的jQuery插件. 如果你熟悉任何下面列出的插件,请分享你的反馈与我们的读者,或如果你知道哪一个我们没有收录,那么请与我们分享在下面的评 ...

随机推荐

  1. CentOS上安装GitBlit服务

    简单介绍 在上一篇文章中,已经简单的介绍了如何在CentOS的服务器上搭建git服务器.但是这种方式实现的服务器功能比较弱,操作起来也比较繁琐.在网上搜索了一圈,感觉Gitblit比较符合我的需求.接 ...

  2. fatal error C1083:无法打开包括文件:“stdint.h”: No such file or directory解决方案

    stdint.h文件是C99的标准头文件,默认情况下VC是不支持的,所以在使用过程中肯定会碰到 "No such file or directory"的问题. 解决办法 1.从网盘 ...

  3. 记录一次CentOS环境升级Python2.6到Python2.7并安装最新版pip

    背景介绍 一次实验中需要安装python-etcd包.安装这个包时要求的python和pip版本比目前系统的版本高. 系统是centos6.6    64位 1 2 3 4 5 6 7 [root@m ...

  4. 捋一捋js面向对象的继承问题

    说到面向对象这个破玩意,曾经一度我都处于很懵逼的状态,那么面向对象究竟是什么呢?其实说白了,所谓面向对象,就是基于类这个概念,来实现封装.继承和多态的一种编程思想罢了.今天我们就来说一下这其中继承的问 ...

  5. 通过修改注册表设置windows环境变量

    开发环境搭建每次都要设置很多环境变量, 一般是通过  [菜单]->[计算机]->[属性]->[高级设置]->[环境变量]进行设置,重装系统后,每次都要设置很多环境变量,很麻烦. ...

  6. Linux socket 类封装 (面向对象方法)

    /* * socketfactory.h * * Created on: 2014-7-19 * Author: root */ #ifndef SOCKETFACTORY_H_ #define SO ...

  7. chrome浏览器下JavaScript实现clipboard时无法访问剪切板解决方案

    在用JavaScript实现某个简单的复制到剪切板功能的时候,会考虑一下浏览器兼容性,主要是重点在IE和FireFox,把这个两个浏览器搞定后,基本上其他浏览器也不用太操心了,Chrome也一样,没出 ...

  8. php 快排

    <?php $arr =array(3,1,5,67,8,7,9,9); function qsort(&$arr,$head,$tail){ if($head>=$tail){ ...

  9. Java--JDBC连接与Django--DATABASES设置

    JDBC 简介 JDBC(Java Data Base Connectivity,java 数据库连接)是一种用于执行 SQL 语句的 JavaAPI,可以为多种关系 数据库提供统一访问,它由一组用 ...

  10. 如何使用 OpenCV 打开摄像头获取图像数据?

    OpenCV 如何打开摄像头获取图像数据? 代码运行环境:Qt 5.9.1 msvc2015 32bit OpenCV 3.3.0 #include "include/opencv2/ope ...