JQuery入门(9)自定义插件

简介: 一、准备开始 准备做一个可折叠的控制面板 当创建一个jQuery插件时,本质是在扩展jQuery库。要真正了解插件如何扩展jQuery库需要对JavaScript prototype属性有一个基本了解。虽然不直接使用,但是JavaScript prototype属性可以通过jQuery属性fn在后台使用,这是原生JavaScript prototype属性的一个jQuer

一、准备开始
准备做一个可折叠的控制面板
当创建一个jQuery插件时,本质是在扩展jQuery库。要真正了解插件如何扩展jQuery库需要对JavaScript prototype属性有一个基本了解。虽然不直接使用,但是JavaScript prototype属性可以通过jQuery属性fn在后台使用,这是原生JavaScript prototype属性的一个jQuery别名。

jQuery.fn.accordion = function() {
    // 添加代码
};

创建一个 jQuery 插件所推荐的方法是,先创建一个允许使用美元符号 ($) 的包装器函数。在默认情况下,美元符号可能与其他 JavaScript 框架发生冲突,如果将插件包装在一个函数中,就不会出现冲突。所以推荐使用下面代码创建jQuery插件:

(function($) {
    $.fn.accordion = function() {
        // 添加插件代码
    };
})(jQuery);

上面代码,jQuery 关键字被应用到包装器函数中,这允许您在插件中使用美元符号,就像使用 fn 属性时那样。包装器函数就绪后,就可以在整个插件的任何地方使用美元符号代替 jQuery 关键字,不会干扰其他第三方插件。

二、维护链接性
jQuery 的一个优势是允许使用任何类型的选择器。但是,必须记住,你的插件可以处理几种不同的元素类型。使用 this 关键字允许你的插件应用于相关函数,通过循环实现每个元素的访问,而不考虑元素类型。如果在 each 循环前使用 return 关键字,就可以使用您的插件维护链接性。

三、构造一个可折叠面板的页面
一个典型的层叠设计包括标题栏和相关内容区域。定义列表是一个可供 accordions 使用的很好的 HTML 结构;dt 元素供标题所用,而dd 元素供内容区域所用。

<dl class="accordion" id="my-accordion">
 <dt>Section 1</dt>
   <dd>111111111111111111111111</dd>
 <dt>Section 2</dt>
    <dd>22222222222222222222222</dd>
  <dt>Section 3</dt>
    <dd>33333333333333333333333</dd>
  <dt>Section 4</dt>
    <dd>44444444444444444444444</dd>
</dl>

四、自定义你的插件
对于每个 Accordion,你以使用 jQuery 的 children 方法访问相关定义的标题,返回一个数组或 dt 元素。应用一个 click 事件到 dt 元素,然后一个名为 reset 方法应用到每个 dt。accordion 首次加载时,该 reset 方法会折叠所有 dd 元素。单击 dt 元素或者标题栏时,click 事件会触发一个名为 onClick 的自定义方法。自定义 onClick 方法用于查找 accordion 中的所有 dt 元素。它调用一个自定义 hide 方法,该方法通过使用 next 方法找到紧挨着 dt 元素的 dd 元素,隐藏每个相关的 dd 元素,通过使用 next 方法找到紧挨着 dt 元素的 dd 元素,然后向上滑动激活它。

所有 dd 元素被隐藏后,使用 slideDown 方法,就可以看见与单击过的 dt 元素相关的 dd 元素,并创建一个放大和收缩动画,如清单 8 所示。onClick 方法的最后一行代码是 return false,确保任何被点击的主题栏没有显现出其一般行为。例如,如果你使用一个 anchor 元素作为标题栏,您可能想要执行 return false,这样就不会将用户定向到另一个页面或现有页面的一部分。
代码详细:
js代码

(function($) {
  $.fn.accordion = function(options) {
    return this.each(function() { var dts = $(this).children('dt'); dts.click(onClick); dts.each(reset); });

    function onClick() {
      $(this).siblings('dt').each(hide);
      $(this).next().slideDown('fast');
      return false;
    }

    function hide() {
      $(this).next().slideUp('fast');
    }

    function reset() {
      $(this).next().hide();
    }
  }
})(jQuery);

html代码

<!DOCTYPE HTML>
<html>
<head>
    <title>自定义你的插件</title>
    <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
</head>
<body>
    <dl class="accordion" id="my-accordion">
      <dt>1</dt>
        <dd>1111111111111111111</dd>
      <dt>2</dt>
        <dd>2222222222222222222</dd>
      <dt>3</dt>
        <dd>3333333333333333333</dd>
      <dt>4</dt>
        <dd>4444444444444444444</dd>
</dl>

<script type="text/javascript">
  $(function(){
    $('dl#my-accordion').accordion();
})
</script>
</body>
</html>
目录
相关文章
|
4月前
|
JavaScript
jQuery图片延迟加载插件jQuery.lazyload
jQuery图片延迟加载插件jQuery.lazyload
|
3月前
|
设计模式 JavaScript 前端开发
必知的技术知识:jQuery插件开发精品教程,让你的jQuery提升一个台阶
必知的技术知识:jQuery插件开发精品教程,让你的jQuery提升一个台阶
37 1
|
22天前
|
JavaScript 前端开发 数据安全/隐私保护
Validform jQuery插件详解
【8月更文挑战第21天】
|
3月前
|
JavaScript 前端开发 API
jQuery 入门:轻松创建与插入节点
jQuery 入门:轻松创建与插入节点
|
3月前
|
JavaScript Perl PHP
一篇文章讲明白jQuery插件之jqueryeditableplugin
一篇文章讲明白jQuery插件之jqueryeditableplugin
20 0
|
4月前
|
JavaScript 数据可视化 前端开发
jQuery-JS插件-第9次课-使用插件让领导对你刮目相看-附案例作业
jQuery-JS插件-第9次课-使用插件让领导对你刮目相看-附案例作业
46 0
|
4月前
|
JavaScript
jQuery自定义动画-第8次课-animate-stop函数-附案例
jQuery自定义动画-第8次课-animate-stop函数-附案例
32 0
|
4月前
|
JavaScript 前端开发 安全
jQuery 第十一章(表单验证插件推荐)
jQuery 第十一章(表单验证插件推荐)
84 1
|
4月前
|
JavaScript 前端开发
开发jQuery插件这些就够了
开发jQuery插件这些就够了
47 0
|
9月前
|
存储 JavaScript 前端开发
JQuery入门基础
JQuery入门基础
38 0