`
saybody
  • 浏览: 907919 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

跟我一起学写jQuery插件(附完整实例及下载)

 
阅读更多
<p class="descriptionArea">
jQuery如此流行,各式各样的<b>jQuery插件</b>也是满天飞。你有没有想过把自己的一些常用的JS功能也写成jQuery插件呢?如果你的答案是肯定的,那么来吧!和我一起<b>学写jQuery插件</b>吧!
</p>

<h3>嗨,美女,这是我写的一个jQuery插件!</h3>
<p>很多公司的前端设计开发人员都是女孩子,而这些女孩子很多JavaScript技能都不是很好。而前端开发过程中,JavaScript技能又是必不可少的。所以,如果前端小MM正在为某个JavaScript效果发愁的时候,你潇洒的过去,然后对她说:“嗨,美女,用这个吧。这是我写的一个jQuery插件。”我想基本上你的人生大事就能很快解决。</p>

<h3>先想好做个什么功能</h3>
<p>这是第一步,也是很重要的一步,鉴于咱们都是刚学习写jQuery插件,所以,这个功能一定要简单一些。不要想一口就吃个胖子,咱也吃不了。咱还是捡个瘦的下手吧。但是,这个功能也不能太无聊,如果无聊到几乎没用处,就算做好了也是扔到马桶里,不会持续更新,也便不会持续进步了。</p>
<p>我最终选择的是:美化表格,让表格的奇偶行颜色不同,然后鼠标移到某行上,某行可以高亮显示。功能简单又实用,不错,不错。呵呵~~</p>
<h3>不急着写,先想想实现原理</h3>
<p>还不急,先想想实现原理。必要的时候,先写出简单的实现的原型。</p>
<p>我的这个美化表格的例子,实现原理倒是简单,无非就是找到表格的奇偶行,然后添加不同的class,活动行高亮显示也很简单,只要判断mouseover事件,然后添加一个class,mouseout的时候,再去掉这个class即可。</p>

<h3>一个通用的框架</h3>
<p>在动手写自己的jQuery插件之前,自然是先研究一下别人写的插件了。其实写jQuery也基本有一个通用的框架。行,那咱也把这框架照搬过来吧。</p>

<div class="csharpcode-wrapper">
<div class="csharpcode">
<pre class="alt">(<span class="kwrd">function</span>($){</pre>
<pre class="alteven">    $.fn.yourName = <span class="kwrd">function</span>(options){</pre>
<pre class="alt">        <span class="rem">//各种属性、参数</span></pre>
<pre class="alteven">        }</pre>
<pre class="alt">        <span class="kwrd">var</span> options = $.extend(defaults, options);</pre>
<pre class="alteven">        <span class="kwrd">this</span>.each(<span class="kwrd">function</span>(){</pre>
<pre class="alt">        <span class="rem">//插件实现代码</span></pre>
<pre class="alteven">        });</pre>
<pre class="alt">    };</pre>
<pre class="alteven">})(jQuery);</pre>
</div>
</div>

<p>有了这个,咱就可以往里面套东西了。</p>

<h3>名号、参数和属性</h3>
<p>好不容易开始闯荡江湖了,一定要有一个响亮的名号才行,这样走在江湖上,才能够屌,够威风。不信,你听听人家“中国牙防组”!所以,咱这里一定要起个响亮的名号,一定要简单、明了、够权威。所以,决定了,就叫做“<b>tableUI</b>”了!</p>
<p>参数和属性也很简单,无非就是三个class的名称。就叫做:evenRowClass、oddRowClass和activeRowClass吧。</p>
<p>所以,上面的框架,咱就把上半身给填上了。</p>
<div class="csharpcode-wrapper">
<div class="csharpcode">
<pre class="alt">(<span class="kwrd">function</span>($){</pre>
<pre class="alteven">    $.fn.tableUI = <span class="kwrd">function</span>(options){</pre>
<pre class="alt">        <span class="kwrd">var</span> defaults = {</pre>
<pre class="alteven">            evenRowClass:<span class="str">"evenRow"</span>,</pre>
<pre class="alt">            oddRowClass:<span class="str">"oddRow"</span>,</pre>
<pre class="alteven">            activeRowClass:<span class="str">"activeRow"</span>            </pre>
<pre class="alt">        }</pre>
<pre class="alteven">        <span class="kwrd">var</span> options = $.extend(defaults, options);</pre>
<pre class="alt">        <span class="kwrd">this</span>.each(<span class="kwrd">function</span>(){</pre>
<pre class="alteven">            <span class="rem">//实现代码</span></pre>
<pre class="alt">        });</pre>
<pre class="alteven">    };</pre>
<pre class="alt">})(jQuery);</pre>
</div>
</div>
<p>这里重点说一下这一句:</p>
<div class="csharpcode-wrapper"><div class="csharpcode">
<pre class="alt"><span class="kwrd">var</span> options = $.extend(defaults, options);</pre>
</div></div>

<p>看上去很屌的一句,其实就是合并多个对象为一个。这里就是,如果你在调用的时候写了新的参数,就用你新的参数,如果没有写,就用默认的参数。想进一步了解的朋友,可以参考jquery的官方文档: <a target="_blank" href="http://api.jquery.com/jQuery.extend/" title="">http://api.jquery.com/jQuery.extend/</a></p>

<h3>开始下半身吧</h3>
<p>ok,上半身填补完了,咱就可以填补下半身吧。无非就是找到基数行和偶数行(感谢jQuery提供了类似tr:even这种写法,使其及其简单),然后添加上相应的class。然后再给所有的tr,绑定mouseover和mouseout事件即可。下半身代码如下:</p>

<div class="csharpcode-wrapper">
<div class="csharpcode">
<pre class="alt">(<span class="kwrd">function</span>($){</pre>
<pre class="alteven">    $.fn.tableUI = <span class="kwrd">function</span>(options){</pre>
<pre class="alt">        <span class="kwrd">var</span> defaults = {</pre>
<pre class="alteven">            evenRowClass:<span class="str">"evenRow"</span>,</pre>
<pre class="alt">            oddRowClass:<span class="str">"oddRow"</span>,</pre>
<pre class="alteven">            activeRowClass:<span class="str">"activeRow"</span>            </pre>
<pre class="alt">        }</pre>
<pre class="alteven">        <span class="kwrd">var</span> options = $.extend(defaults, options);</pre>
<pre class="alt">        <span class="kwrd">this</span>.each(<span class="kwrd">function</span>(){</pre>
<pre class="alteven">            <span class="kwrd">var</span> thisTable=$(<span class="kwrd">this</span>);</pre>
<pre class="alt">            <span class="rem">//添加奇偶行颜色</span></pre>
<pre class="alteven">            $(thisTable).find(<span class="str">"tr:even"</span>).addClass(options.evenRowClass);</pre>
<pre class="alt">            $(thisTable).find(<span class="str">"tr:odd"</span>).addClass(options.oddRowClass);</pre>
<pre class="alteven">            <span class="rem">//添加活动行颜色</span></pre>
<pre class="alt">            $(thisTable).find(<span class="str">"tr"</span>).bind(<span class="str">"mouseover"</span>,<span class="kwrd">function</span>(){</pre>
<pre class="alteven">                $(<span class="kwrd">this</span>).addClass(options.activeRowClass);</pre>
<pre class="alt">            });</pre>
<pre class="alteven">            $(thisTable).find(<span class="str">"tr"</span>).bind(<span class="str">"mouseout"</span>,<span class="kwrd">function</span>(){</pre>
<pre class="alt">                $(<span class="kwrd">this</span>).removeClass(options.activeRowClass);</pre>
<pre class="alteven">            });</pre>
<pre class="alt">        });</pre>
<pre class="alteven">    };</pre>
<pre class="alt">})(jQuery);</pre>
</div>
</div>


<h3>最重要的一步!</h3>
<p>也许有些朋友觉得这样就算是完成了。但是切切相反,我们还有最重要的一步没有完成,那就是一定要在插件上方,写上插件的名称、版本号、完成日期、作者,作者的联系方式、出生日期、三围……等等。因为只有这样才能显的这个插件够专业。</p>

<div class="csharpcode-wrapper">
<div class="csharpcode">
<pre class="alt"><span class="rem">/*</span></pre>
<pre class="alteven"><span class="rem"> * tableUI 0.1</span></pre>
<pre class="alt"><span class="rem"> * Copyright (c) 2009 JustinYoung  http://justinyoung.cnblogs.com/</span></pre>
<pre class="alteven"><span class="rem"> * Date: 2010-03-30</span></pre>
<pre class="alt"><span class="rem"> * 使用tableUI可以方便地将表格提示使用体验。先提供的功能有奇偶行颜色交替,鼠标移上高亮显示</span></pre>
<pre class="alteven"><span class="rem"> */</span></pre>
<pre class="alt">(<span class="kwrd">function</span>($){</pre>
<pre class="alteven">    $.fn.tableUI = <span class="kwrd">function</span>(options){</pre>
<pre class="alt">        <span class="kwrd">var</span> defaults = {</pre>
<pre class="alteven">            evenRowClass:<span class="str">"evenRow"</span>,</pre>
<pre class="alt">            oddRowClass:<span class="str">"oddRow"</span>,</pre>
<pre class="alteven">            activeRowClass:<span class="str">"activeRow"</span>            </pre>
<pre class="alt">        }</pre>
<pre class="alteven">        <span class="kwrd">var</span> options = $.extend(defaults, options);</pre>
<pre class="alt">        <span class="kwrd">this</span>.each(<span class="kwrd">function</span>(){</pre>
<pre class="alteven">            <span class="kwrd">var</span> thisTable=$(<span class="kwrd">this</span>);</pre>
<pre class="alt">            <span class="rem">//添加奇偶行颜色</span></pre>
<pre class="alteven">            $(thisTable).find(<span class="str">"tr:even"</span>).addClass(options.evenRowClass);</pre>
<pre class="alt">            $(thisTable).find(<span class="str">"tr:odd"</span>).addClass(options.oddRowClass);</pre>
<pre class="alteven">            <span class="rem">//添加活动行颜色</span></pre>
<pre class="alt">            $(thisTable).find(<span class="str">"tr"</span>).bind(<span class="str">"mouseover"</span>,<span class="kwrd">function</span>(){</pre>
<pre class="alteven">                $(<span class="kwrd">this</span>).addClass(options.activeRowClass);</pre>
<pre class="alt">            });</pre>
<pre class="alteven">            $(thisTable).find(<span class="str">"tr"</span>).bind(<span class="str">"mouseout"</span>,<span class="kwrd">function</span>(){</pre>
<pre class="alt">                $(<span class="kwrd">this</span>).removeClass(options.activeRowClass);</pre>
<pre class="alteven">            });</pre>
<pre class="alt">        });</pre>
<pre class="alteven">    };</pre>
<pre class="alt">})(jQuery);</pre>
</div>
</div>


<h3>ok!来看看一个完整的实例吧!</h3>
<p>没图没真相,没代码没真相。所以贴图和完整实例是必须的。</p>
<center>
<img src="http://downloads.cnblogs.com/justinyoung/articleIMG/2010/tableUI_example.gif" alt="jquery插件"><br><a href="http://www.cnblogs.com/JustinYoung/archive/2010/03/30/jquery-chajian.html" title="学写jQuery插件实例">学写jQuery插件实例</a>
</center>

<div class="downloadList">
<h3>jQuery插件tableUI的在线实例和下载</h3>
<ul class="uldownloadList">
<li><a href="http://downloads.cnblogs.com/justinyoung/articleIMG/2010/tableUI/index.html" title="在线实例页面" target="_blank">在线实例页面</a></li>
<li class="evenLi"><a href="http://downloads.cnblogs.com/justinyoung/articleIMG/2010/tableUI.rar" title="实例下载地址">实例下载地址</a></li>
<li><a href="http://jquery-easyui.wikidot.com/tutorial" title="easyui" target="_blank">顺便推荐一个不错的jquery插件</a></li>
</ul>
</div>
&lt;!--end:  downloadList--&gt;


<h3>近期推荐阅读文章</h3>
<p>
<a target="_blank" href="http://www.cnblogs.com/JustinYoung/archive/2010/03/20/qianduan_houduan_xiezuo.html" title="">
<img src="http://downloads.cnblogs.com/justinyoung/articleIMG/2010/qianduan_houduan.jpg" alt="前后端配合"><br>
3 月20日博客园张江聚会演讲资料
</a>
</p>
<br><p>
<a target="_blank" href="http://www.cnblogs.com/JustinYoung/archive/2010/01/25/internet-project.html" title="">
<img src="http://downloads.cnblogs.com/justinyoung/articleIMG/2010/internet-poject05.gif" alt="IxEdit"><br>
抛砖:如何进行互联网项目开发
</a>
</p>
<div>

alimama_pid="mm_10056409_242955_3624216"; alimama_titlecolor="0000FF";
alimama_descolor ="000000"; alimama_bgcolor="FFFFFF";
alimama_bordercolor="E6E6E6"; alimama_linkcolor="008000";
alimama_bottomcolor="FFFFFF"; alimama_anglesize="0"; alimama_bgpic="0";
alimama_icon="0"; alimama_sizecode="16"; alimama_width=658;
alimama_height=60; alimama_type=2;

</div>
分享到:
评论

相关推荐

    跟我一起学写jQuery插件开发方法(附完整实例及下载)

    这是我写的一个jQuery插件。”我想基本上你的人生大事就能很快解决。 先想好做个什么功能 这是第一步,也是很重要的一步,鉴于咱们都是刚学习写jQuery插件,所以,这个功能一定要简单一些。不要想一口就吃个胖子,咱...

    jquery插件之flexigrid学习实例

    在这个"jquery插件之flexigrid学习实例"中,我们将深入探讨如何在Struts2框架下结合JSON进行数据交互,以实现一个完整的应用。 首先,我们需要了解Flexigrid的基本使用方法。在HTML页面中,我们需要引入jQuery库和...

    jQueryUI官方实例集

    **jQueryUI官方实例集** jQueryUI是一个基于JavaScript库jQuery的扩展,它提供了...同时,实例集还涵盖了如何与其他jQuery插件和库(如Bootstrap)兼容,以及如何进行自定义主题设计,确保与网站的整体风格保持一致。

    JQuery&CSS;&CSS;+DIV实例大全.rar

    一款jQuery插件slide幻灯片切换图片宽高自适应 74.一款jQuery漂亮淡出淡入焦点大图切换源码 75.一款jquery缩略图商品切换放大展示功能插件 76.一款使用jQuery左右控制横向图片滚动的代码 77.一款基于jquery...

    jQuery 源码+实例+注释

    **jQuery 源码分析与实例详解** jQuery 是一个广泛使用的 JavaScript 库,它极大地简化了 JavaScript 的 DOM 操作、事件处理、动画制作以及 AJAX 交互。本教程旨在通过源码解析、实例演示和详细注释,帮助新手快速...

    分享仿淘宝天猫商品分类导航Jquery插件

    首先,"分享仿淘宝天猫商品分类导航Jquery插件"是指利用jQuery技术和前端开发技巧,创建一个与淘宝天猫商品分类导航相似的用户界面和交互效果。这种插件通常包括层次结构的展示、鼠标悬停展开/收起分类、动态加载更...

    JQuery实例源代码

    这个压缩包中的"JQuery实例"包含了各种实际应用中的jQuery代码示例,让我们一起深入探讨这些实例背后的原理和技巧。 1. **DOM操作** - jQuery提供了简洁的API来选择、操作和遍历DOM元素。例如,`$("#id")`用于选取...

    JQuery实例下载

    **jQuery 实例下载详解** jQuery 是一款非常流行的 JavaScript 库,它极大地简化了 JavaScript 的DOM操作、事件处理、动画设计和Ajax交互。本资源提供了一系列的jQuery学习实例,旨在帮助初学者快速掌握jQuery的...

    jQueryUI实例程序

    **jQueryUI实例程序** jQueryUI 是一个基于 jQuery JavaScript 库的用户界面插件集合,它提供了丰富的交互式组件和设计模式,使得开发者可以轻松创建出美观、易用的Web应用程序界面。这个压缩包包含了多种jQueryUI...

    很详细的jquery学习资料,有很多例子哦

    这部分将介绍如何选择和使用这些插件,以及如何开发自己的jQuery插件。例如,jQuery UI提供了一系列预封装的交互组件,如日期选择器、对话框等。而像jQuery Validation Plugin这样的工具则可以帮助我们轻松实现表单...

    jquery ui1.8.16+jquery-easyui-1.2.2+asp.net+ztree实例

    jQuery UI 是一个基于 jQuery JavaScript 库的用户界面插件集合,它提供了一套完整的组件,包括对话框、拖放、日期选择器、可排序列表等,用于创建富有交互性和吸引力的网页应用。在1.8.16这个版本中,它包含了当时...

    jQuery图片动画特效实例

    本实例重点探讨的是如何利用jQuery实现丰富的图片动画特效,以提升网站的视觉吸引力和用户体验。 首先,jQuery的动画功能是通过其内置的`.animate()`方法实现的。这个方法允许开发者指定CSS属性的变化,并在指定的...

    jQuery borainTimeChoice日期时间选择插件.zip

    jQuery BorainTimeChoice是一款基于jQuery库的日期时间选择插件,专为网页界面设计,用于提供用户友好的日期和时间输入交互。...同时,对于有经验的开发者,这是一个学习和研究jQuery插件开发的好实例。

    jQuery初学实例代码集jQuerydemos.rar

    - **自定义插件开发(Custom Plugins Development)**:了解如何根据需求编写自己的jQuery插件。 ### 实践与学习建议 1. **动手实践**:每个示例代码都要亲自运行并尝试修改,观察不同的结果,以此加深理解。 2. ...

    jquery筛选器插件选项卡

    "js"可能是一个文件夹,包含了实现插件功能的JavaScript代码,包括jQuery插件的核心逻辑,以及可能的辅助脚本。"img"文件夹则可能包含了用于插件样式的图像资源,如图标、背景图等。 在具体实现中,jQuery插件通常...

    jQuery EasyUI仿Extjs漂亮界面实例演示

    通过扩展EasyUI现有的组件或使用jQuery插件机制,可以实现个性化功能。 9. **优化与性能**:在实际应用中,需要注意对EasyUI的优化,如减少不必要的DOM操作,正确使用异步加载,以及对大数据量表格的分页和虚拟滚动...

    jquery的实例juery最好的中文案例

    **jQuery是最受欢迎的JavaScript库之一,它通过简化DOM操作、事件处理、动画效果以及Ajax交互,...实例下载包含的文件应覆盖以上所有知识点,提供了详细的代码示例和运行效果,对于初学者和进阶者都是宝贵的参考资料。

    jQuery验证插件(表单验证)

    这个完整版的jQuery验证插件包含了一系列的功能和示例,帮助开发者轻松地创建安全、用户友好的表单。 首先,jQuery验证插件的核心功能在于它的验证规则。这些规则可以应用于表单字段,确保用户输入的数据符合预设的...

    备忘:jquery的一些实例

    在实际项目中,jQuery通常与其他工具和库一起使用,如`grunt` 和 `gulp` 作为构建工具,`bower` 或 `npm` 管理依赖,`git` 进行版本控制,以及`jshint` 和 `jshint-stylish` 用于代码质量和风格检查。 总结,jQuery...

Global site tag (gtag.js) - Google Analytics