jquery插件是什么??这里以讨论实力方法为主,比如 $("div").pluginname({});

他的最简单形势应该是

$.prototype.plugin = function(){}

我们一点点来加东西

1,自己的变量不污染全局,别人的变量不污染我们

(function($,undefined){
var window = Function("return this")();//一定是window
$.prototype.plugin = function(){ }
)(jQuery)

  

2,判断已加载或者处理其他附加数据,处理参数,实例化一个对象,实例化的方式不一定要new一个,你喜欢也可以拷贝一个,工厂一个等。。

        function plugin(element, options) {
var self = this;
self.element = element;
self.$element = $(element);
if (typeof options == "object") {
self.opts = $.extend({}, defaults, options);
}
}
$.fn[pluginName] = function (options, callback) {
var dataname = "plugin_" + pluginName;
$(this).each(function (index, item) {
var hasObject = $(item).data(dataname);
if (!hasObject) {
var someobj = new plugin(item, options);
$(item).data(dataname, someobj);
}
});
}
return $.fn[pluginName];

  3,AMD CMD加载

    // 全局模式
var pluginobj = factory(jQuery);
//UMD
if (typeof exports === 'object') {
module.exports = pluginobj;
}
//AMD
if (typeof define === "function" && define.amd) {
define(pluginName, ["jquery"], function () {
return pluginobj;
});
}
//CMD
if (typeof define === "function" && define.cmd) {
define(pluginName, ['jquery'], function (require, exports, module) {
var $ = require('jQuery');
module.exports = pluginobj;
});
}

  全局模式是否开放取决于你的依赖项是否必然加载。

此时把原来的自执行外面再套一层,把原来的自执行改成普通方法改名为factory方法。

 
完整版:
(function () {
var window = Function("return this")();
var applicationPath = window.applicationPath === "" ? "" : window.applicationPath || "../..";
var pluginName = "mypluginname"; function factory($) {
"use strict";
if ($.isFunction($.fn[pluginName])) {
return $.fn[pluginName];
} function plugin(element, options) {
var self = this;
self.element = element;
self.$element = $(element);
if (typeof options == "object") {
self.opts = $.extend({}, defaults, options);
}
}
$.fn[pluginName] = function (options, callback) {
//something like old jquery plugin
var dataname = "plugin_" + pluginName;
$(this).each(function (index, item) {
var hasObject = $(item).data(dataname);
if (!hasObject) {
var someobj = new plugin(item, options);
$(item).data(dataname, someobj);
}
});
}
return $.fn[pluginName];;
} var loaded = false; //UMD
if (typeof exports === 'object') {
module.exports = factory(); }
//AMD
if (typeof define === "function" && define.amd) {
define(pluginName, ["jquery"], factory);
loaded = true;
}
//CMD
if (typeof define === "function" && define.cmd) {
define(pluginName, ['jquery'], function (require, exports, module) {
var $ = require('jQuery');
module.exports = factory($);
});
}
// other
if (!jQuery.xxx && jQuery.loadScript) {
$.loadScript("/scripts/plugins/xxx.js", function () {
pluginobj = factory(jQuery);
})
}
if (!loaded) {
// 全局模式 也可以不判断强制加载是执行一遍全局模式
factory(jQuery);
}
})();

  

 
 

jquery插件编写模版的更多相关文章

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

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

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

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

  3. jQuery插件编写,

    jQuery插件编写 jQuery插件 最近搞jquery插件的编写这里做下笔记 给jquery扩展的方式很多,看的我眼花缭乱 方式1 $.fun=function(){} 方式2 $.fn.fun= ...

  4. 自己写jquery插件之模版插件高级篇(一)

    需求场景 最近项目改版中,发现很多地方有这样一个操作(见下图gif动画演示),很多地方都有用到.这里不讨论它的用户体验怎么样. 仅仅是从复用的角度,如果每个页面都去写text和select元素,两个b ...

  5. (转)jQuery插件编写学习+实例——无限滚动

    原文地址:http://www.cnblogs.com/nuller/p/3411627.html 最近自己在搞一个网站,需要用到无限滚动分页,想想工作两年有余了,竟然都没有写过插件,实在惭愧,于是简 ...

  6. jQuery插件编写学习+实例——无限滚动

    最近自己在搞一个网站,需要用到无限滚动分页,想想工作两年有余了,竟然都没有写过插件,实在惭愧,于是简单学习了下jQuery的插件编写,然后分享出来. 先说下基础知识,基本上分为两种,一种是对象级别的插 ...

  7. jQuery插件编写步骤详解

    如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jq ...

  8. jquery插件编写【转载】

    如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jq ...

  9. jQuery插件编写学习中遇见的问题--attr prop

    个人博客: https://chenjiahao.xyz 最近在学习jQuery的插件的编写,有两种方式,$.fn.extend以及$.extend,一种是作用于对象原型上,一种是直接作用于jQuer ...

随机推荐

  1. 4.3 多线程进阶篇<中>(GCD)

    更正:队列名称的作用的图中,箭头标注的有些问题,已修正 本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末 如果觉得本文内容过长,请前往本人 “简书” 本文源码 Demo 详见 Gith ...

  2. phoneGap蓝牙设备链接打印操作插件

    前台 bluetooth.js /*Copyright 2013  101.key Licensed under the Apache License, Version 2.0 (the " ...

  3. 轻松3步实现c#windowsform窗体美化

    1.需要下载IrisSkin4.dll或者IrisSkin2.dll和ssk皮肤文件. 2.添加引用IrisSkin4.dll或者IrisSkin2.dll到项目中,将下载好的ssk皮肤文件复制到项目 ...

  4. iOS 中 ARC 项目 兼容 MRC

    iOS 项目中MRC 和 ARC 项目的代码兼容问题: 1.ARC 项目中导入 MRC 第三方类的时候要在此类上添加 -objc-arc. 2.MRC 项目中导入 ARC 类的时候要在次类上添加 -f ...

  5. USER STORIES AND USE CASES - DON’T USE BOTH

    We’re in Orlando for a working session as part of the Core Team building BABOK V3 and over dinner th ...

  6. OpenCV学习笔记(一)——OpenCV3.1.0+VS2015开发环境配置

    摘要: 由于最近AR(增强现实)这个概念非常火爆,各种基于AR的应用及游戏逐渐面向大众,而在AR中最重要的两个技术就是跟踪识别和增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实现的, ...

  7. 【Beta】Daily Scrum Meeting第七次

    1.任务进度 学号 已完成 接下去要做 502 发布任务到服务器 测试 509 将各api的处理逻辑放到类里面 让主api调用这些类 517 删除任务和教师的控件及逻辑 提交报课审核信息 530 完善 ...

  8. DirectX游戏编程(一):创建一个Direct3D程序

    一.环境 Visual Studio 2012,DirectX SDK (June 2010) 二.准备 1.环境变量(如没有配置请添加) 变量名:DXSDK_DIR 变量值:D:\Software\ ...

  9. mui框架中底部导航的跳转2

    接上一篇 还有一种方法就是在一心得页面中打开我们所需要的网页 代码如下: 向新的的页面穿值: 获取到新页面上的值:

  10. 全选或反选表格中第一列的checkbok

    <input type="checkbox" onclick="$('table tr > td:first-child input:checkbox').p ...