近期在研究jQuery插件,插件编写的目的是给已经有的一系列方法或函数做一个封装,以便在其它地方反复使用,方便后期维护。

JQuery除了提供一个简单、有效的方式进行管理元素以及脚本,它还还提供了例外一种机制:即给核心模块添加自己的方法和额外的功能。通过这样的机制,Jquery同意我们自己创建属于我们自己的插件,提高我们在开发过程中的效率。

尽管在jQuery命名空间中,我们禁止使用了大量的javaScript函数名和变量名。可是仍然不可避免某些函数或变量名将于其它jQuery插件冲突。因此我们习惯将一些方法封装到还有一个自己定义的命名空间。

第一个演示样例:

1.插件文件 MyFirstPlugin.js

注:用$.extend()把默认值和用户传进来的值是联合在一起,这样子的话,就把用户自己定义的值覆盖了默认用户的值。假设用户没定义值,就用系统自己定义的。

this.each(function () { 这个前面加了一个 return。这样就实现了我们的链式操作。

(function ($) {
$.fn.textHover = function (options) {
var defaultVal = {
Text: '鼠标悬浮事件',
ForeColor: 'red',
BackColor: '#B9FDD8'
};
//默认值
var obj = $.extend(defaultVal, options);
return this.each(function () {
var selObject = $(this); //获取当前对象
var oldText = selObject.text(); //获取当前对象的Text
var oldBgColor = selObject.css("background-color"); //获取当前对象的背景色
var oldColor = selObject.css("color"); //获取当前对象的字体的颜色
selObject.hover(
function () {
selObject.text(obj.Text); //进行赋值
selObject.css("background-color", obj.BackColor);
selObject.css("color", obj.ForeColor);
},
function () {
selObject.text(oldText);
selObject.css("background-color", oldBgColor);
selObject.css("color", oldColor);
}
);
});
}
})(jQuery);

2.前台HTML代码

<form id="form1" action="#">
<div id="div1" style="width: 400px; height: 150px; background-color: #B9FDD8;">
Hello world</div>
<br />
<div id="div2" class="textBar" style="width: 200px; height: 150px; background-color:#F0FBFF;float:left; border:1px solid gray;">
哈哈 我是第二个 DIV
</div>
<div id="div3" class="textBar" style="width: 200px; height: 150px; background-color:#EDEAFF;float:left; border:1px solid gray; margin-left:2px;">
哈哈 我是第三个 DIV
</div>
</form>

3.JS代码

3.1导入jQuery库文件

<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>    <!--jQuery文件必须放在自己定义插件的前面!防止自己定义插件引用对象时报错。-->
<script src="MyScripts/MyFirstPlugin.js" type="text/javascript"></script>


3.2 JS代码

<script type="text/javascript">
$(function () {
$('#div1').textHover({
Text: '鼠标悬浮在第一个 DIV 上面。。。',
ForeColor: 'yellow',
BackColor: 'Red'
});
$('#div2').textHover({ Text: '我是第二个 DIV 。。。' });
$("#div3").textHover({ Text: '我是第三个 DIV 。 。。 ' }).css("background-color", "#B1B0FE"); //初次载入的时候 给出改变其颜色
});
</script>

OK,到这里,一个简单的插件就完毕了。

最新文章

  1. 全文搜索 Lucene.Net
  2. 三言两语之微信小程序开发初体验(1)
  3. sklearn 组合分类器
  4. 关于IE开发人员工具(F12)找不到的问题
  5. HDU 2510 - 符号三角形
  6. AbstractQueuedSynchronizer的介绍和原理分析(转)
  7. 【原创】leetCodeOj --- Jump Game II 解题报告
  8. eclipse xml自动提示
  9. Java进程&线程(一)
  10. 周杰伦的2000w个故事
  11. [解决]IP地址非法,请接入联通热点后重新获取
  12. 创建springboot的聚合工程(三)
  13. Android开发学习笔记-自定义控件的属性
  14. BZOJ5297 CQOI2018社交网络(矩阵树定理)
  15. 【ListBox】ListBox的相关操作
  16. Vagrant up Warning: Authentication failure. Retrying...
  17. 用Lucene.net对数据库建立索引及搜索&lt;转&gt;
  18. Maven中mirrors和repository的关系
  19. cxGrid时间格式与导出Excel
  20. 20165101 实验一 Java开发环境的熟悉

热门文章

  1. 【云计算】Docker build解决父镜像层级关系过多问题:Cannot create container with more than 127 parents
  2. vim 多窗口,多tab编辑
  3. UVA270-Lining Up
  4. C++ Primer笔记2_四种类型转换_异常机制
  5. ssm整合(Spring+SpringMVC+Mybatis)
  6. .NET Framwork 之 源代码编译成托管代码托管代码合并成程序集
  7. sprintf、vsprintf、sprintf_s、vsprintf_s、_snprintf、_vsnprintf、snprintf、vsnprintf 函数辨析
  8. Unity Inspector 给组件自动关联引用(二)
  9. Hadoop生态圈介绍及入门(转)
  10. No suitable driver found for jdbc:mysql://localhost:3306/hibernate_basic