封装基于jq弹窗插件
相信码友们对于$.fn.extexd();$.extend()以及$.fn.custom和$.custom都有一定的了解;我阐述一下我自己对于$.fn.custom和$.custom的理解、有理解错误或是有更好的建议直接喷我就好!
下面咱们进行简单插件的封装;
Jquery为开发插件提供了两个方法,分别是:
$.fn.INFOplug= $.INF_Oplug=function(){}
先简单的阐述下这两种方法:
这两个分别是:
$.INFplug;是为了扩展jquery本身,为类添加新的工具方法;
$.fn.INFOplug;给jquery对象添加方法。
例子:
$.fn.INFOplug=function(a,b){
alert(a+b)
};
$.INF_Oplug=function(a,b){
alert(a+b)
}
该两种方法分别:
在jquery对象上创建了一个INFOplug方法;该方法中打印a+b;
在jquery上拓展了工具INF_Oplug方法;打印如上a+b;
两者的使用方法是不同的,下面举个实例:
INFOplug方法:
$('div).INFOplug(4,5);
INF_Oplug方法:
$.INF_Oplug(4,5)
这是两者大致的意思,下面我们用这两个方法进行封装一个基于jquery的弹窗插件,代码如下:
 (function($){
     var __INFO__ = {
         plug:'jquerySpwialog',
         ver:'1.0.1.2',
         author:'sunpengwei'
     };
     var defaults = {
         title:"",
         tips:"",
         txt:null,
         ok:"确定",
         cancel:"",
         callback:function(){},
         htmls:'<div id="jquery_dn_dialog_mask" style="background:rgba(0,0,0,0.3);width:100%;height:100%;position:fixed;top:0;left:0;z-index:2147483647">\
                 <div id="jqurey_dn_dialog_main" style="background:#dedede;left:50%;top:50%;position:absolute;transform:translate(-50%,-50%);border-radius:10px;overflow:hidden;min-width:270px">\
                       <h1 id="jqdndialog_title" style="text-align:center;font-size:22px;padding:10px 0 0 0;magring:10px 5px">弹窗标题</h1>\
                       <div id="jqdndialog_tips" style="font-size:18px;margin:0 17px;padding:0 0 20px 0">弹窗内容</div>\
                     <p style="margin:5px 20px">\
                         <input id="jqdndialog_txt" type="text" style="border-radius:5px;width:100%;line-height:30px;font-size:20px;border:0px">\
                     </p>\
                     <div id="jqdndialog_button" style="border-top:1px solid #b8b8b8;display:flex;justify-content:space-around;">\
                         <a href="javascript:;" style="color:#007aff;font-weight:bold;display:inline-block;height:44px;line-height:44px;text-align:center;text-decoration:none;width:100%">按钮</a>\
                         <a href="javascript:;" style="color:#007aff;font-weight:bold;display:inline-block;height:44px;line-height:44px;text-align:center;text-decoration:none;width:100%;border-left: 1px solid #b8b8b8" >按钮</a>\
                     </div>\
                 </div>\
             </div>'
     };
     $.fn[__INFO__.plug] = $[__INFO__.plug] = function(options){
         var settings = $.extend({},defaults,options);
         //初始化
         var initDOM = function(conf){
             if(conf) settings = $.extend({},settings,conf);
             //获取元素
             var $mask = $(settings.htmls).appendTo(document.body);
             var $main = $mask.children("#jqurey_dn_dialog_main");
             var $title = $main.children("#jqdndialog_title");
             var $tips = $main.children("#jqdndialog_tips");
             var $txt = $main.find("#jqdndialog_txt");
             var $ok = $main.find("#jqdndialog_button a:first");
             var $cancel = $main.find("#jqdndialog_button a:last");
             //赋值
             $title.html(settings.title);
             $tips.html(settings.tips);
             if(settings.txt === null){
                 $txt.hide();
             }else{
                 $txt.val(settings.txt).focus();
             }
             $ok.html(settings.ok);
             if(settings.cancel){
                 $cancel.html(settings.cancel);
             }else{
                 $cancel.hide();
             }
             $main.find("#jqdndialog_button a").bind("touchstart click",function(e){
                 console.log(e.type);
                 e.preventDefault();
                 e.stopPropagation();
                 var res = {result:$(this).text()};
                 if(settings.txt !== null) res.texts = $txt.val();
                 if(settings.callback) settings.callback(res);
                 $mask.remove();
             }).hover(function(){
                 $(this).css("background","#d2d2d2");
             }, function(){
                 $(this).css("background","transparent");
             });
         };
         this.bind("touchstart click",function(e){
             e.preventDefault();
             e.stopPropagation();
             initDOM();
         });
         if($.isFunction(this)) initDOM();
         this.showSpwialog  = function(options){
             initDOM(options);
         }
         return this;
     };
 })(jQuery);
封装基于jq弹窗插件的更多相关文章
- 基于jq插件开发及弹窗实例
		
基于jq的插件开发是什么鬼,$.fn是什么鬼,我在实际工作中也遇到过这个问题,下面就让我们一起来看一看这些都是什么鬼. 首先我们介绍$.fn. $.fn是指jquery的命名空间,加上fn上的方法及属 ...
 - 基于jq图片居中插件 [center]
		
最近在做一个项目,大量的图片基于js进行缩放(图片放大镜),考虑用css要写许多hack,而已经基于jq了,干脆写个方法得了. 代码很简单,不用多讲但是很实用. $.fn.extend({ cente ...
 - 基于JQ的自定义弹窗组件
		
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
 - 基于jQuery封装一个瀑布流插件
		
/*封装一个瀑布流插件*/ (function($){ $.fn.WaterFall = function(){ /*这是你初始化 调用这个方法的时候的 那个jquery选着到的dom对象 this* ...
 - Django---CSRF的装饰器,CSRF的流程,JSON数据格式,ajax技术(基于JQ实现)
		
Django---CSRF的装饰器,CSRF的流程,JSON数据格式,ajax技术(基于JQ实现) 一丶CSRF相关的装饰器 from django.utils.decorators import m ...
 - 基于zepto的插件之移动端无缝向上滚动并上下触摸滑动
		
该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧. 公司的移动端项目是基于zepto的,有一个页面要求文字能够无缝地不停向上滚动,但查了 ...
 - 原生Js弹窗插件|web弹出层组件|对话框
		
wcPop.js 是一款基于原生javascript开发的前端 web版 弹窗组件,遵循原生 H5/css3/JS 的书写规范,简单实用.拿来即用(压缩后仅10KB).已经兼容各大主流浏览器.内含多种 ...
 - 支付宝小程序自定义弹窗插件|支付宝dialog插件|model插件
		
支付宝小程序自定义弹窗组件wcPop|小程序自定义对话框|actionSheet弹窗模板 支付宝小程序官方提供的alert提示框.dialog对话框.model弹窗功能比较有限,有些都不能随意自定义修 ...
 - 基于AppDomain的"插件式"开发
		
很多时候,我们都想使用(开发)USB式(热插拔)的应用,例如,开发一个WinForm应用,并且这个WinForm应用能允许开发人员定制扩展插件,又例如,我们可能维护着一个WinService管理系统, ...
 
随机推荐
- CAN在汽车电子中的应用
			
http://xuxiaozhao163.blog.163.com/blog/static/3793592200802784146452/ CAN是控制器局域网络(Controller Area Ne ...
 - 0809MySQL-InnoDB Compact 行记录格式
			
InnoDB存储引擎提供了compact(5.1后的默认格式)和redundant两个格式来存放行记录数据.redundant格式是为了兼容之前的版本而保留. mysql> show table ...
 - linux下最简单的端口转发工具
			
linux下简单好用的工具rinetd,实现端口映射/转发/重定向 官网地址http://www.boutell.com/rinetd 软件下载wget http://www.boutell.com/ ...
 - Find the Clones Trie Tree
			
Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 8306 Accepted: 3130 Description Doubl ...
 - js 清空对象\删除对象的属性
			
在项目中,有些对象用完后需要重置,下面简单介绍下JS中清除对象的方法.方法如下: 方法一:字面量定义对象 第一步,定义一个空对象并打印出来,代码和效果: 代码: var student = {};co ...
 - Data Binding Guide——google官方文档翻译(下)
			
这篇博客是Data Binding Guide官网文档翻译的下篇.假设没看过前半部分翻译的能够先看Data Binding Guide--google官方文档翻译(上) 一,数据对象 不论什么不含业 ...
 - C++管理指针成员
			
1.C++中一般採用以下三种方法之中的一个管理指针成员: (1)指针成员採取常规行为. 这种类具有指针的全部缺陷:具有指针成员且使用默认复制构造函数和赋值操作符,无法避免悬垂指针(两个对象的指针成员指 ...
 - 让cocos2dx支持并通过arm64 编译
			
为了要支持64位,请把这个文件直接替换到相应的lib文件夹下.本来是须要改neton_matrix_impl.c里的宏定义, 在 platform/ios/EAGLVIEW.mm中 在neon_mat ...
 - C# List数据批量更新
			
针对单条数据一般都是update语句直接更新 例如:update UserTable set UserName='小名' where userid=xxx 但是如果是针对List数据组进行更新的话 ...
 - LeetCode 210. Course Schedule II(拓扑排序-求有向图中是否存在环)
			
和LeetCode 207. Course Schedule(拓扑排序-求有向图中是否存在环)类似. 注意到.在for (auto p: prerequistites)中特判了输入中可能出现的平行边或 ...