博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jQuery插件构成基础知识
阅读量:7305 次
发布时间:2019-06-30

本文共 1520 字,大约阅读时间需要 5 分钟。

hot3.png

一般,我们对Jquery的扩展有两种形式

  1. 注册在$.fn命名空间的插件扩展
  2. 注册在$命名空间的工具函数扩展

插件扩展一般是依赖Dom节点的,也就是我们常见的插件启动往往是这种形式的:

$('#target').plugin(options);

工具是不依赖Dom节点的,如 $.extend()、 $.parseJSON() 方法。

一个典型的Jquery插件一般会包含如下几部分:

  • Jquery库_
  • 插件的jQuery实现文件,主要是注册在$.fn命名空间中的插件核心代码_
  • 静态资源文件:关联的CSS样式文件、图片等_
  • 作为插件容器的目标DOM节点_
  • 若干行插件的启动代码_

在Jquery插件核心实现的外层设计上,往往遵循以下设计:

首先会在核心实现代码最外部套上

(function($){	//implemention code for plugin ...})(Jquery);

即给闭包传入Jquery对象来初始化$参数,从而避免在插件的代码实现中用到的$变量与其他框架中的$冲突, 同时也将插件实现时定义的变量与外部上下文环境解耦出来,避免变量污染。

接着开始在fn命名空间中注册插件函数

(function($){	$.fn.插件名字 = function(customizeOptions){		//coding ...	}})(Jquery);

右边的闭包实现往往可以传入一个customize option, 其会在闭包内部通过extend方法与将用户自定义配置与默认选项合并

(function($){	$.fn.插件名字 = function(customizeOption){		var defaultOption = {			a: xxx,			b: xxx,			...		};		var option = $.extend({}, defaultOption, customizeOption);	}})(Jquery);

接着你可以通过this.each来迭代每个符合css选择器规则的目标Dom节点, 通过$(this)来访问插件的单个特定的目标Dom节点所对应的Jquery对象。

(function($){	$.fn.插件名字 = function(customizeOptions){		var defaultOption = {			a: xxx,			b: xxx,			...		};		var option = $.extend({}, defaultOption, customizeOption);		return this.each(function(){			$this = $(this);			//implemention coding...		});	}})(Jquery);

以上便是Jquery插件的一般外层设计,最后便是需要发挥你的想象来操作$this对象实现各种效果。

最后拓展一下,在jQuery特效插件方面,一般站点有三种组织形式

  1. 通过iframe内联一个特定页面来显示特效,而这个特定页面独占式的仅仅是用于实现特效的
  2. 通过内联一个flash object对象来显示特效
  3. 手动在当前页面启动的jQuery插件特效

前两种形式我们直接找出相关引用的路径就能直接抠出效果插件了。

第三种形式我们可以尝试找到DOM的启动节点,然后全文搜索节点ID往往就能找到插件函数名,我们可以上github上搜索一下是否有相应的现成的项目,找不到的话只能按插件的构成一步步去抠出来。

转载于:https://my.oschina.net/u/2400083/blog/483882

你可能感兴趣的文章
《精通软件性能测试与LoadRunner最佳实战》—第2章2.4节性能测试用例
查看>>
《驾驭大数据》一8.3 每一位优秀的分析专家都是独特的
查看>>
《Linux/UNIX OpenLDAP实战指南》——1.3 OpenLDAP schema概念
查看>>
《趣题学算法》—第0章0.5节算法分析
查看>>
《编程珠玑(续)(修订版)》—第2章2.4节原理
查看>>
《面向机器智能的TensorFlow实践》一1.2 深度学习
查看>>
《R语言数据挖掘:实用项目解析》——第2章,第2.10节小结
查看>>
input file上传图片预览
查看>>
spirngBoot 常用注解
查看>>
NodeJS:将文件夹按照存放路径变成一个对应的JSON
查看>>
《从0开始学Elasticsearch》—集群健康和索引管理
查看>>
mac上安装virtualenvwrapper 找不到.bashrc怎么做
查看>>
input 的placeholder不显示如何解决
查看>>
swift-4简单的分支和三目的写法
查看>>
小葵花妈妈课堂开课了:《Runnable、Callable、Future、RunnableFuture、FutureTask 源码分析》...
查看>>
【译】在 React 组件中使用 Refs 指南
查看>>
redis映射
查看>>
Java程序员必须掌握的Spring依赖管理原理
查看>>
程序员才能看懂的动图
查看>>
关于HTTP几个请求头含义
查看>>