声明:详细内容请看<<锋利的jquery>>这本书 这里没对自定义选择器作介绍 因为我感觉jQuery已经为我们定义足够的选择器已经满足使用 <!DOCTYPE html>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>编写jquery插件</title></head>
<style type="text/css">table        { border:0;border-collapse:collapse;}td    { font:normal 12px/17px Arial;padding:2px;width:100px;}th            { font:bold 12px/17px Arial;text-align:left;padding:4px;border-bottom:1px    solid #333;}.even        { background:#FFF38F;}  /* 偶数行样式*/.odd        { background:#FFFFEE;}  /* 奇数行样式*/.selected    { background:#FF6500;color:#fff;}
</style>
<script type="text/javascript" src="../js/jquery-3.1.1.min.js"></script><script type="text/javascript">/*   一: jquery的插件主要分为三种类型1.封装对象方法的插件 这种方法是将对象方法封装起来,用于对通过选择器获取的jquery对象进行操作,是醉常见的操作2.封装全局函数的插件:可将独立的函数加到jquery命名空间之下3.选择器插件:选择器插件 用来扩充自己喜欢的选择器二:插件的基本要点:1.命名要点:jquery.[插件名].js; jquery.color.js 以免和其他javascript库插件混淆2.所有的对象方法应该附件到jquery.fn对象上,而所有的全局函数都应附件到jquery对象本身上3.在插件内部,this指向的是当前通过选择器获得jquery对象,而不像一般的方法那样,例如click()方法内部的this指向dom元素4.可以通过this.each()来遍历所有的元素5.所有的方法和函数插件,都应当以分号结尾,否则压缩的时候可能出现问题 .为了更稳妥,可以先在插件头部添加分号,以免其它人的不规范带来的yingx6.插件应该返回jquery对象,以免他人不规范代码给插件带来影响.7.避免在插件内部使用$作为Jquery对象的别名,而应使用完整的Jquery来表示 这样可以避免冲突 当然也可以利用闭包这种技巧回避这个问题 使用插件内部继续使用$作为Jquery的别名三:jquery插件机制: jquery提供了两个扩展Jquery的方法 :1.jquery.fn.extend()方法:用于扩展封装对象方法的插件2.jquery.extend()方法:用于扩展封装全局函数 和选择器插件的方法     */ ;(function($){$.fn.extend({"alterBgColor":function(options){//插件代码//jQuery.extend()方法经常被设置插件的方法的一系列默认的参数 而且可以很方便地的传入参数覆盖默认值
                options=$.extend({//m默认的设置
                odd:"odd",even:"even",selected:"selected"},options);$("tbody>tr:odd",this).addClass(options.odd);$("tbody>tr:even",this).addClass(options.even);$("tbody>tr",this).click(function(){//判断是否被选中var hasSelected =$(this).hasClass(options.selected);$(this)[hasSelected ? "removeClass":"addClass"](options.selected)//查找内部的checkbox设置对应的属性
              .find(":checkbox").prop("checked",!hasSelected);//如果默认情况下选中则高亮
           });$("tbody>tr:has(:checked)",this).addClass(options.selected);return this;}});})(jQuery);//封装全局函数的插件
    ;(function($){$.extend({ltrim :function(text){//去掉左边的空格//(test || "")防止传进来的字符串变量处于未定义之类的特殊状态 如果test是undefined 则返回字符串""return(text || "").replace(/^\s+/g,"");},rtrim:function(text){//去掉右边的空格return(text || "").replace(/\s+$/g,"");}});})(jQuery);//应用该插件 可以链式操作
    $(function(){$("#table2").alterBgColor().find("th").css("color","red");$("#trimTest").val (jQuery.rtrim("  text  "));});</script>
<body><table id="table1"><thead><tr><th> </th><th>姓名</th><th>性别</th><th>暂住地</th></tr></thead><tbody><tr><td><input type="checkbox" name="choice" value=""/></td><td>张山</td><td>男</td><td>浙江宁波</td></tr><tr><td><input type="checkbox" name="choice" value="" /></td><td>李四</td><td>女</td><td>浙江杭州</td></tr><tr><td><input type="checkbox" name="choice" value="" checked="checked" /></td><td>王五</td><td>男</td><td>湖南长沙</td></tr><tr><td><input type="checkbox" name="choice" value="" /></td><td>找六</td><td>男</td><td>浙江温州</td>    </tr><tr><td><input type="checkbox" name="choice" value="" /></td><td>Rain</td><td>男</td><td>浙江杭州</td></tr><tr><td><input type="checkbox" name="choice" value="" checked="checked" /></td><td>MAXMAN</td><td>女</td><td>浙江杭州</td></tr></tbody>
</table>
<br /><br />
<table id="table2"><thead><tr><th> </th><th>姓名</th><th>性别</th><th>暂住地</th></tr></thead><tbody><tr><td><input type="checkbox" name="choice" value=""/></td><td>张山</td><td>男</td><td>浙江宁波</td></tr><tr><td><input type="checkbox" name="choice" value="" /></td><td>李四</td><td>女</td><td>浙江杭州</td></tr><tr><td><input type="checkbox" name="choice" value="" checked="checked" /></td><td>王五</td><td>男</td><td>湖南长沙</td></tr><tr><td><input type="checkbox" name="choice" value="" /></td><td>找六</td><td>男</td><td>浙江温州</td>    </tr><tr><td><input type="checkbox" name="choice" value="" /></td><td>Rain</td><td>男</td><td>浙江杭州</td></tr><tr><td><input type="checkbox" name="choice" value="" checked="checked" /></td><td>MAXMAN</td><td>女</td><td>浙江杭州</td></tr></tbody>
</table><!-- 有些东西真的那么脆弱 -->  <textarea id="trimTest" rows="5" cols="20"></textarea></body>
</html>

转载于:https://www.cnblogs.com/hu-bo/p/6655245.html

编写jQuery插件的方法相关推荐

  1. 扩展编写jquery插件的方法

    比如要扩展验证功能(jquery.validate.js)中的 messages: { required: "This field is required.", remote: & ...

  2. 自己编写jQuery插件之表单验证

    自己编写jQuery插件之表单验证 吐个嘈先:最近状态不咋滴,真是什么都不想干,不想上班,做什么都没动力,觉得没意思.不想这样,不想这样,快让这种情绪消失吧,忽忽.... 表单验证在项目中用的还是比较 ...

  3. 编写JQuery插件-2

    继续上一节的代码 (function(){/* code */ })() 来我们介绍一下吧,首先定义一个匿名函数 fnction(){/* 这里放置代码 */} 然后用括号括起来, (fnction( ...

  4. 如何编写一个Jquery插件

    首先我们来搞清楚一些关于Jquery插件的知识: 一.插件的种类: 封装对象方法的插件 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进行操作,是最常见的一种插件 封装全局函数的 ...

  5. [置顶]       编写自己的JQUERY插件

    如何编写自己的jquery插件 Jquery的插件主要分为三类: 1.封装对象方法的插件:大部分插件都是封装对象的插件 2.封装全局函数的插件:将独立的函数添加到jquery的命名空间之下.Jquer ...

  6. jQuery插件编写,

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

  7. jquery封装插件的方法

    扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间.这篇文章将概述jQuery插件开发的基本知识,最佳做法和常见的陷阱. 一.入门 编写一个jQuery插件开始于给jQuery.fn ...

  8. jquery插件封装指南

    入门 编写一个jQuery插件开始于给jQuery.fn加入​​新的功能属性,此处添加的对象属性的名称就是你插件的名称: jQuery.fn.myPlugin = function(){//你自己的插 ...

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

    1.表单验证插件Validation   2.表单插件Form   3.动态事件绑定插件livequery 可以为后来的元素绑定事件   类似于jQuery中的live()方法     4.jQuer ...

  10. jquery系列教程7-自定义jquery插件全解:对象函数、全局函数、选择器

    点击打开: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件操作全解 jquery系列教程5-动 ...

最新文章

  1. Linux 下杀毒软件 CPU 占用率为何持续升高?
  2. 由浅到深理解ROS(4)
  3. 趣挨踢 | 用大数据扒一扒蔡徐坤的真假流量粉
  4. 300张小抄表搞定机器学习知识点:学习根本停不下来!
  5. php 项目中引用对方接口_关于PHP中为什么要写接口的问题说明
  6. c语言 指针_初识C语言指针
  7. 【POJ1584】A Round Peg in a Ground Hole,第一次的计算几何
  8. 为什么这么多python广告_为什么铺天盖地都是Python的广告?
  9. 在ubuntu下安装Dynamips
  10. 《麦肯锡方法》第3章“二八法则”与其他-思维导图
  11. 非线性光纤光学_光学青年| 刘兆军教授与晶体光纤激光技术研究,做核心材料和器件...
  12. Win10电脑出现No Bootable Device且无法开机或开机后蓝屏无限重启的多个解决方法
  13. win10 win11 创建共享文件夹 mac 苹果电脑共享 无internet 安全,你的电脑只能访问本地网络中的其它设备 共享文件夹会导致本地电脑无法上网,
  14. 【Visual C++】游戏开发笔记之九 游戏地图制作(一)平面地图贴图
  15. 搭建SSH,SSZ架构需注意数据库的编码问题
  16. springboot 将本地引用的lib一起打包
  17. 计算机网络常见面试问题和解析
  18. Shell编程学习(四)read读取、函数、文件归档、定时任务
  19. 电池巡检微信云监控系统——在线监测、故障诊断、预警
  20. U-boot 2016.11 代码结构 dra7xx

热门文章

  1. 服务器总出现异常?几个小方法助你防范于未然
  2. 小米手机连接电脑(Mac)刷miui12开发版的操作指南
  3. 第六讲 复数和复指数
  4. 魅族4usb计算机连接,魅族MX4如何连接电脑 魅族MX4连接电脑方法
  5. linux系统怎么关闭屏保,Linux关闭屏保
  6. clover删除多余引导_clover如何删除无用启动项_常见问题解析,clover
  7. JavaScript节点操作、删除节点
  8. 【Datawhale数据可视化组队学习】Task05 - 样式色彩秀芳华
  9. 脚本小子_Lua函数
  10. 大盘酝酿反弹中-可以短跑几天