相信码友们对于$.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弹窗插件的更多相关文章

  1. 基于jq插件开发及弹窗实例

    基于jq的插件开发是什么鬼,$.fn是什么鬼,我在实际工作中也遇到过这个问题,下面就让我们一起来看一看这些都是什么鬼. 首先我们介绍$.fn. $.fn是指jquery的命名空间,加上fn上的方法及属 ...

  2. 基于jq图片居中插件 [center]

    最近在做一个项目,大量的图片基于js进行缩放(图片放大镜),考虑用css要写许多hack,而已经基于jq了,干脆写个方法得了. 代码很简单,不用多讲但是很实用. $.fn.extend({ cente ...

  3. 基于JQ的自定义弹窗组件

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

  4. 基于jQuery封装一个瀑布流插件

    /*封装一个瀑布流插件*/ (function($){ $.fn.WaterFall = function(){ /*这是你初始化 调用这个方法的时候的 那个jquery选着到的dom对象 this* ...

  5. Django---CSRF的装饰器,CSRF的流程,JSON数据格式,ajax技术(基于JQ实现)

    Django---CSRF的装饰器,CSRF的流程,JSON数据格式,ajax技术(基于JQ实现) 一丶CSRF相关的装饰器 from django.utils.decorators import m ...

  6. 基于zepto的插件之移动端无缝向上滚动并上下触摸滑动

    该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧. 公司的移动端项目是基于zepto的,有一个页面要求文字能够无缝地不停向上滚动,但查了 ...

  7. 原生Js弹窗插件|web弹出层组件|对话框

    wcPop.js 是一款基于原生javascript开发的前端 web版 弹窗组件,遵循原生 H5/css3/JS 的书写规范,简单实用.拿来即用(压缩后仅10KB).已经兼容各大主流浏览器.内含多种 ...

  8. 支付宝小程序自定义弹窗插件|支付宝dialog插件|model插件

    支付宝小程序自定义弹窗组件wcPop|小程序自定义对话框|actionSheet弹窗模板 支付宝小程序官方提供的alert提示框.dialog对话框.model弹窗功能比较有限,有些都不能随意自定义修 ...

  9. 基于AppDomain的"插件式"开发

    很多时候,我们都想使用(开发)USB式(热插拔)的应用,例如,开发一个WinForm应用,并且这个WinForm应用能允许开发人员定制扩展插件,又例如,我们可能维护着一个WinService管理系统, ...

随机推荐

  1. 0208MySQL5.7之Group Replication

    转自http://blog.itpub.net/29510932/viewspace-2055679/ MySQL Group Replication: Hello World! 对测试版(on la ...

  2. windows终端 进入文件夹

    盘符: 例如想进入D盘 d: cd 进入到当前盘某个目录.cd \ 进入当前盘根目录cd \windows 进入到当前盘Windows目录cd.. 退出到上一级目录 注:进入含有特殊字符目录时需要加引 ...

  3. [DLX精确覆盖] hdu 3663 Power Stations

    题意: 给你n.m.d,代表有n个城市.m条城市之间的关系,每一个城市要在日后d天内都有电. 对于每一个城市,都有一个发电站,每一个发电站能够在[a,b]的每一个连续子区间内发电. x城市发电了.他相 ...

  4. 【转】Unix下C程序内存泄漏检测工具Valgrind安装与使用

    Valgrind是一款用于内存调试.内存泄漏检测以及性能分析的软件开发工具. Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Goo ...

  5. event.currentTarget与event.target的差别介绍

    event.currentTarget与event.target的差别想大家在使用的时候不是非常在意.本文以測试代码来解说它门之间的不同.即,event.currentTarget指向事件所绑定的元素 ...

  6. Android----获得当前应用包名、当前activity的名字、推断是否是系统桌面、service类

    1.获得当前应用包名 public static String getRunningActivityName(Context context) { ActivityManager activityMa ...

  7. PDF.NET支持最新的SQLite数据库

    最近项目中用到了SQLite,之前项目中用的是PDF.NET+MySQL的组合,已经写了不少代码,如果能把写好的代码直接用在SQLite上就好了,PDF.NET支持大部分主流的数据库,这个当然可以,只 ...

  8. Cache操作类

    封装类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...

  9. UVa 11722(几何概率)

    题意:你和你的朋友要乘坐火车,并且都会在A城市相遇,你会在(t1,t2)中的任意时刻以相同的概率密度到达, 你朋友会在(s1,s2)中的任意时刻以相同的概率密度到达,你们的火车在A城市都会停留w分钟, ...

  10. 【转】ios蓝牙开发学习笔记(四)ios蓝牙应用的后台处理 -- 不错

    原文网址:http://dev.ailab.cn/article-1038-220511-1.html 默认情况下,当应用进入后台或挂起时,蓝牙任务是不执行的.但是,你可以把应用声明为支持蓝牙后台执行 ...