jquery插件开发基础入门
jquery插件开发基础入门
入门
编写一个jquery插件开始于给jquery.fn加入新的功能属性,此处添加的对象属性的名称就是你的插件名称
jQuery.fn,myPlugin = function(){
//你自己的插件代码
};
为了避免冲突我们应该将jQuery传递给一个自我执行的封闭程序
(function($){
$.fn.myPlugin = function(){
//你自己的插件代码
}
})(jQuery)
环境
现在我们可以编写实际的插件代码,但是在这之前我们必须得对插件所处的环境有个概念,在插件的范围里,this关键字代表了这个插件要执行的jQuery对象,这里容易产生一个普遍的误区,因为在其他包含callback的jQuery函数中,this关键字代表了原生的DOM元素,这常常会导致开发者误将this关键字无谓的包在jQuery中,如下所示
(function($){
$.fn.myPlugin = function(){
//此处没有必要将this包在$号中如$(this),因为this已经是一个jQuery对象。
//$(this)等同于$($("#element"));
this.fadeIn("normal",function(){
//此处callback函数中this关键字代表一个DOM元素
})
}
})(jQuery)
//调用
$("#element").myPlugin();
基础知识
现在我们理解了jQuery插件的基础知识,让我们写一个插件
(function($){
$.fn.maxHeight = function(){
var max = 0;
this.each(function(){
max = Math.max(max,$(this).height());
});
return max;
};
})(jQuery);
var tallest = $("div").maxHeight(); //返回高度最大的div元素的高度
维护Chainability(维护链接性)
很多时候一个查件的恶意图仅仅是以某种方式修改收集的元素,并把它们传递给链中的下一个方法。要保持一个插件的chainability必须确保你的插件返回this关键字
(function($){
$.fn.lockDimensions = function(type){
return this.each(function(){
var $this = $(this);
if(!type || type =="width"){
$this.width($this.width());
}
if(!type || type =="height"){
$this.height($this.height());
}
})
}
})(jQuery)
$("div").lockDimensions("width").css("color","red");
//由于插件返回this关键字,它保持了chainability,这样jQuery收集的元素可以继续被jQuery方法如.css控制。 因此,如果你的插件不返回固有的价值,你应该总是在其作用范围内返回this关键字。 此外,你可能会推断出,传递给插件的参数将会在插件的作用范围内被传递。 因此,在前面的例子,字符串’width’变成了插件的类型参数。
默认值和选项
对于比较复杂的和提供了许多选项可制订的插件,最好有个当插件被调用的时候可以被拓展的默认设置(通过使用$.extend).
(function($){
$.fn.tooltip = function(options){
//创建一些默认值,拓展任何被提供的选项
var settings = $.extend({
"location" : "top",
"background-color" : "blue"
},options);
return this.each(function(){
//Tooltip插件代码
});
};
})(jQuery)
$("div").tooltip({
"location":"left"
})
jquery插件开发基础入门的更多相关文章
- jquery插件开发快速入门
1.添加jQuery对象方法添加jQuery对象方法:jQuery.prototype.myMethod. 在jQuery源码中有一句:jQuery.fn = jQuery.prototype,也就是 ...
- jQuery插件开发入门
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间.这篇文章将概述jQuery插件开发的基本知识,最佳做法和常见的陷阱. 入门 编写一个jQuery插件开始于给jQuery.fn加入 ...
- jQuery:自学笔记(1)——基础入门
jQuery:自学笔记(1)——基础入门 认识JQuery 1.jQuery概述 jQuery是一个快速.小巧 .功能丰富的JavaScript函数库.它可以实现“写的少,做的多”的目标. jQuer ...
- jQuery官方基础教程笔记(转载)
本文转载于阮一峰的博文,内容基础,结构清晰,是jquery入门不可多得的资料,非常好,赞一个. 阮一峰:jQuery官方基础教程笔记 jQuery是目前使用最广泛的javascript函数库. 据统计 ...
- jQuery插件开发详细教程
这篇文章主要介绍了jQuery插件开发详细教程,将概述jQuery插件开发的基本知识,最佳做法和常见的陷阱,需要的朋友可以参考下 扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间. ...
- JQuery学习使用笔记 -- JQuery插件开发
内容转载自 http://www.css88.com/archives/4821 扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间.这篇文章将概述jQuery插件开发的基本知识,最 ...
- JavaScript学习笔记(四)——jQuery插件开发与发布
jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...
- JavaScript学习总结(四)——jQuery插件开发与发布
jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...
- jQuery插件开发(转)
jQuery插件开发全解析 jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命 ...
随机推荐
- Java中Native关键字的作用
初次遇见 native是在 java.lang.Object 源码中的一个hashCode方法: 1 public native int hashCode(); 为什么有个native呢?这是我所要学 ...
- openssl 证书操作命令
生成Self Signed证书 # 生成一个key,你的私钥,openssl会提示你输入一个密码,可以输入,也可以不输, # 输入的话,以后每次使用这个key的时候都要输入密码,安全起见,还是应该有一 ...
- winform 计算器
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- Ubuntu 16.04 nvidia安装
Ubuntu更新完NVIDIA驱动后,重启电脑进入不了系统,一直处于登录界面.后来重启电脑时发现我进入不了系统了,输入我的登录密码会发现屏幕一闪,然后又重新跳回到登录界面,就是进入了login loo ...
- iOS性能优化:Instruments
检测内存泄露:Instruments中的Leaks 前言 如果要检测内存泄露,我们会使用Xcode7自带的Instruments中的Leaks工具来检测. 现在的开发环境是ARC,所以很少会出现内存泄 ...
- 本地yum库制作及本地安装Docker
生产环境中,我们总是会遇到服务器无法连接外网的情况,这样,如果想安装某个应用,而这个应用依赖的其他类库又特别多,就很痛苦了.这个时候,就需要自己制作个本地的yum库,进行本地安装.本文将以Docker ...
- RegExp类型,单体内置对象
1.RegExp类型: 1)什么是正则表达式:RegExp --是一种规则,模式 --强大的字符串匹配工具 --创建: --使用RegExp构造函数创建:var re=new ...
- js遍历数组的错误方法
for (var index in myArray) { // don't actually do this console.log(myArray[index]); } 缺点: 数组的索引值inde ...
- Java 基础知识 问答
1,Java为什么能跨平台运行?请简述原理. 因为Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”——字节码.然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由J ...
- websphere如何删除应用程序服务器(概要管理工具)
在IBM WebSphere 的概要管理工具中我们可以新建一个应用程序服务器,但是工具中并未提供删除已经建过的应用程序服务器.下面 交大家一个比较简单的方法来删除应用程序服务器 图片中可以看到,我已经 ...