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>
目录
相关文章
|
2月前
|
JavaScript
jQuery 树型菜单插件(Treeview)
jQuery 树型菜单插件(Treeview)
65 2
|
19天前
|
JavaScript
jQuery实现弹窗消息提示特效插件
这是一个简单的jQuery弹窗消息提示插件,用于网站用户操作提示。包含默认、成功、失败、警告、提示弹窗等不同形式弹出的消息提示效果,轻量简单,欢迎下载!
25 4
|
6月前
|
设计模式 JavaScript 前端开发
必知的技术知识:jQuery插件开发精品教程,让你的jQuery提升一个台阶
必知的技术知识:jQuery插件开发精品教程,让你的jQuery提升一个台阶
67 1
|
2月前
|
JavaScript 前端开发
jQuery Growl 插件(消息提醒)
jQuery Growl 插件(消息提醒)
58 4
jQuery Growl 插件(消息提醒)
|
2月前
|
存储 JSON JavaScript
jQuery Cookie 插件
jQuery Cookie 插件
49 4
jQuery Cookie 插件
|
1月前
|
JavaScript 定位技术
jQuery鹰眼视图小地图定位预览插件minimap.js
这是一个jQuery小地图定位预览视图,默认左侧是页面主要内容,minimap.js的好处就是在它的右侧形成一个快速定位通道,产生一个缩小版的页面,即预览效果,可以点击并快速定位到页面的某个位置。简单实用,欢迎下载!
31 0
|
2月前
|
JavaScript
Jquery从入门到精通
Jquery从入门到精通
|
4月前
|
JavaScript 前端开发 数据安全/隐私保护
Validform jQuery插件详解
【8月更文挑战第21天】
100 0
|
6月前
|
JavaScript 前端开发 API
jQuery 入门:轻松创建与插入节点
jQuery 入门:轻松创建与插入节点
|
6月前
|
JavaScript Perl PHP
一篇文章讲明白jQuery插件之jqueryeditableplugin
一篇文章讲明白jQuery插件之jqueryeditableplugin
36 0