锋利的jQuery--编写jQuery插件(读书笔记五)[完结篇]

1.表单验证插件Validation
 
2.表单插件Form
 
3.动态事件绑定插件livequery
可以为后来的元素绑定事件
 
类似于jQuery中的live()方法
 
 
4.jQuery UI
 
5.jQuery Cookie
 
6.遮罩层插件:thickbox
 
7.编写jQuery插件
<1>编写插件的目的:给已经有的一些列方法或函数做一个封装,一遍在其他地方使用,方便后期维护和提高开发效率。
 
<2>三种类型的插件
a:封装对象方法的插件  jQuery.fn.extend()
b:封装全局函数的插件  jQuery.extend()
c:选择器插件  jQuery.extend()
 
<3>插件内部的this指向的是jQuery对象,而不是DOM对象。
 
8.对于
jQuery 插件-(初体验一)
jquery.fn.extend与jquery.extend--(初体验二)
$.extend({},defaults, options) --(初体验三)
的补充。
<1>插件的基本要点
 
<2>jQuery.extend()方法处理可以用于扩展jQuery对象之外,还有一个强大的功能,就是用于扩展已有的Object对象。
例如:
var settings={va: false, li: 5, name:"foo"};
var options={va: true, name:"bar"};
var newSet=jQuery.extend(settings,options);
 
结果:
newSet={va: true, li: 5, name:"bar"};
 
所以:jQuery.extend()方法经常被用于设置插件方法的一系列默认参数。
例子:
function foo(options){options=jQuery.extend({name:"bar",length:5,dataType:"xml"},options);
}

 

<2>封装方法的插件使用
例子:写color插件。
1.js文件命名:jQuery.color.js
 
2.格式
;(function($){})(jQuery);
 
3.由于是封装方法的插件使用:jQuery.fn.extend()
;(function($){$.fn.extend({"color":function(value){}})
})(jQuery);
 
4.this的可链式调用性
;(function($){$.fn.extend({"color":function(value){return this.css("color",value);    //为了可链式调用,返回this
        }})
})(jQuery);

 

5.两个功能:设置与获取color
;(function($){$.fn.extend({"color":function(value){if(value==undefined){return this.css("color");    //为了可链式调用,返回this)else{return this.css("color",value); }}})
})(jQuery);
 
6.插件提升
a:由于css方法本身具有返回第一个匹配元素的功能,所以不需要使用eq()来获取第一个元素
b:由于css方法内部已经有判断value是否为undefined的机制,所以可以省略if
最终:
;(function($){$.fn.extend({"color":function(value){return this.css("color",value); }})
})(jQuery);
 
7.实际使用:
<script>;(function($){$.fn.extend({"color":function(value){return this.css("color",value); }})
})(jQuery);//应用
$(function(){alert($("div").color());    //获取第一个color$("div").color("red");    //设置所有的div的color为red
})</script>

 

8.插件扩展:如果要定义一组插件可以这么写
;(function($){$.fn.extend({"color":function(value){},“border”:function(value){},...})
})(jQuery);
 
9.注意:jQuery选择符可能会匹配多个元素,可以在插件内部调用each()方法来遍历匹配元素。
如:
;(function($){$.fn.extend({"color":function(value){return this.each(function(){})}})
})(jQuery);
 
<3>封装全局函数的插件使用
例子:去除左侧和右侧的空格
;(function($){$.extend({ltrim:function(text){return (text || "").replace(/^\s+/g,"");},rtrim:function(text){return (text || "").replace(/^\s+$/g,"");}})
})(jQuery);//调用
$("div").val(jQuery.ltrim("      text        ")
)
 
<4>选择器插件
$("div:gt(1)")
 
jQuery中的源码是
gt:function(a,i,m){
    return i>m[3]-0;
}
有三个参数:a,i,m
 
 
    
 
 

转载于:https://www.cnblogs.com/zqzjs/p/4943617.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/419351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中的注解以及应用 @Deprecated @SupressWarning @Override

Annotation注解在 Java 中有着很广泛的,他是做为一种标识 为javac所识别,。每一个注解 都对应这一个Java类 在java.lang包中 有三个注解 分别是Deprecated SuppressWarning Override 在使用 注解前必须要在 注解类前面加上 每增加一个注解 就意味着产生了一个注解…

React Native 实现物流进度信息

1.实现效果 2.直接上代码 use strict; import React, {Component} from react; import {View, StyleSheet, Text, Dimensions} from react-native export default class Button extends Component {render() {let invoice [{id: 111, content: 已签收,签收人&#xff1a;门…

String中intern的方法

intern public String intern() 返回字符串对象的规范化表示形式。 一个初始时为空的字符串池&#xff0c;它由类 String 私有地维护。 当调用 intern 方法时&#xff0c;如果池已经包含一个等于此 String 对象的字符串&#xff08;该对象由 equals(Object) 方法确定&#xff0…

iOS开发学习-nonatomic和atomic的区别

nonatomic是非原子性的&#xff0c;也就是给线程不加原子锁&#xff0c;这样的代码运行效率会更高一点&#xff0c;例如&#xff1a; property (nonatomic,copy)NSString *userName; property (atomic,copy)NSString *userName; nonatomic能提高好几倍的效率&#xff0c;所以在…

Vue创建递归树组件(点击可展开关闭)

本篇文章借鉴于此处&#xff0c;如果只需显示树形组件&#xff0c;可以直接访问该博主文章。我这里对他的组件做了扩展&#xff0c;增加了点击展开和关闭操作&#xff0c;话不多说上代码。 1.数据结构 const data {label: 根目录,children: [{label: 目录A,children: [// 叶…

【Java线程】锁机制:synchronized、Lock、Condition

转载声明&#xff1a;转载自&#xff1a;点击打开链接http://blog.csdn.net/vking_wang/article/details/9952063非常感谢博主的讲解&#xff0c;对锁这一块又加深了理解http://www.infoq.com/cn/articles/java-memory-model-5 深入理解Java内存模型&#xff08;五&#xff09…

linux 进程线程拓展

依次参考&#xff1a; 多线程和多进程的区别&#xff08;小结&#xff09; Linux内核源代码分析——fork()原理&多进程网络模型 Linux写时拷贝技术(copy-on-write) linux内核 do_fork 函数源代码浅析 转载于:https://www.cnblogs.com/mylinux/p/4947103.html

“睡服”面试官系列第五篇之proxy(建议收藏学习)

目录 1. 概述 2. Proxy 实例的方法 2.1get() 2.2set() 2.3apply() 2.4has() 2.5construct() 2.7deleteProperty() 2.8defineProperty() 2.9getOwnPropertyDescriptor() 2.10getPrototypeOf() 2.11isExtensible() 2.12ownKeys() 2.13preventExtensions() 2.14set…

Java 批量插入数据到数据库(MySQL)中

实现Java批量插入数据库数据&#xff1a; package Proxy;import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedSt…

实战CGLib系列之proxy:方法拦截MethodInterceptor

一、首先说一下JDK中的动态代理&#xff1a; JDK中的动态代理是通过反射类Proxy以及InvocationHandler回调接口实现的&#xff0c;但是&#xff0c;JDK中所要进行动态代理的类必须要实现一个接口&#xff0c;也就是说只能对该类所实现接口中定义的方法进行代理&#xff0c;这在…

“睡服”面试官系列第六篇之set数据结构(建议收藏学习)

目录 set 1基本用法 2Set 实例的属性和方法 3遍历操作 3.1 keys() &#xff0c; values() &#xff0c; entries() 3.2 forEach() 3.3遍历的应用 weakset 含义 语法 总结 set 1基本用法 ES6 提供了新的数据结构 Set。它类似于数组&#xff0c;但是成员的值都是唯一…

“睡服”面试官系列第七篇之map数据结构(建议收藏学习)

目录 1map 1.1含义和基本用法 1.2实例的属性和操作方法 1.2.1size属性 1.2.2set(key, value) 1.2.3get(key) 1.2.4has(key) 1.2.5delete(key) 1.2.6clear&#xff08;&#xff09; 1.3遍历方法 1.4与其他数据结构的互相转换 1.4.1Map 转为数组 1.4.2数组 转为 Map…

java 入门 第二季3

1.继承 1.java是单继承的&#xff0c;一个子类只有一个父类 父类&#xff0c;基类 子类&#xff0c;派生类 2.继承的好处&#xff1a;子类拥有父类的所有属性和方法&#xff0c;属性的修饰符不能是private 3.语法规则&#xff1a; class 子类 extends 父类 如果父类的属性是用p…

聊聊并发(四)——深入分析ConcurrentHashMap

转载自&#xff1a;http://www.infoq.com/cn/articles/ConcurrentHashMap 术语定义 术语 英文 解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式&#xff0c;其输出被称为哈希值。哈希表hash table根据设定的哈希函数H(key)和处理冲突方法将一组…

布点算法的原理和实现

在数据可视化的过程中&#xff0c;绘制网络拓扑图是很重要的&#xff0c;它能清晰呈现一个复杂网络的结构&#xff0c;节点的重要性和关系。比如下面几张图&#xff1a; 下面这张图是我的软件绘制的&#xff1a; 这些都有一个共同的问题&#xff0c;就是如何让图绘制的更加美观…