[译] EXTENDING JQUERY – 2.2 A simple plugin

2.2 一个简单的插件示例


jQuery 插件能做任何事情,这个已经由浩如烟海的各类第三方插件如证明。小到只影响一个元素,大到改变多个元素的外观和行为,jQuery
的各种功能等你来扩展。

2.2.1 占位文本插件

为了维持一个form
的空间,很多时候一个字段的描述往往是省略的,取而代之的是用一个占位文本。如果这个字段是空的,占位文本将会重新显示。为了更好的用户体验,这个占位文本往往是灰色的,用来区别真正的内容。这个功能有个比较通用的名字叫做水印(watermark)。

占位的文本可以在插件初始化的时候赋值,但是最好允许多个文本框同时赋值。因此input 的title
属性是一个理想的占位文本取值的所在。当该字段获得焦点的时候,你需要移除占位文本并且移除灰色的样式。相应的,当该字段失去焦点的时候,如果值仍然是空白,就需要恢复原来的文字和样式。为了有更好的扩展性,字段的样式需要由css去指定,能够被插件的使用者轻松的重写样式。

2.2.2 Watermark 插件代码

由于这个插件的作用对象是页面上的元素,则是一个集合插件。因此需要扩展$.fn

$.fn.watermark = function (options) {
//set options
optoins = $.extend({ watermarkClass: ‘watermark‘ }, options || {});
//when field is focused
return this.focus(function () {
var field = $(this);
if (field.val() == field.attr(‘title‘)) {
field.val(‘‘);
removeClass(options.watermarkClass);
}
}).blur(function () {
var field = $(this);
if (field.val() == ‘‘) {
field.val(field.attr(‘title‘)).addClass(options.watermarkClass);
}
}).blur();
};

该插件扩展$.fn,声明了$.fn.watermark 使得该插件和jQuery 选择器无缝集成。定义了options
参数的默认值,watermarkClass 和值watermark. 通过extend
方法,允许被重写该属性。||{} 用来确保当options
没有被提供的时候使用默认值。为了允许该插件和其他插件的链式调用,一个关键的jQuery 理念就是function 必须返回当前的集合。由于默认内置的jQuery
方法已经实现了该功能,只需要直接返回内置的方法返回值即可。.blur 就是链式调用的例子。最后触发blur
给字段赋初始值。

这个简单的集合插件给了你一个第一印象。接下去的文章将会讲解一些jQuery 插件开发时候的最佳实践的理念。

2.3 小结

jQuery 开发者很有远见,提供了很多可供扩展的点。这章通过简单的例子让你初尝jQuery 开发的概念。

欲知详情,请继续收看下一波。。。

[译] EXTENDING JQUERY – 2.2 A simple plugin,布布扣,bubuko.com

时间: 2024-10-05 01:07:38

[译] EXTENDING JQUERY – 2.2 A simple plugin的相关文章

[译] Extending jQuery Part1 Simple extensions

本章包含: JQuery 的起源和目标. 你能扩展JQuery 的那些部分. JQuery 扩展的实例. 如今,JQuery 已经是网络上最受欢迎的JavaScript Library. 1.1 jQuery 背景 JQuery 的主要特性如下: 元素选择器 元素遍历 元素操作 事件处理 特效以及动画 Ajax 扩展性 各种各样的帮助函数 跨浏览器 1.1.1 起源 起源其实不是那么重要,本来作者取名叫做jSelect, 悲剧的是该名字已经被占用,所以便改叫jQuery. 1.1.2 成长历程

【简译】jQuery对象的奥秘:基础介绍

本文翻译自此文章 你有没有遇到过类似$(".cta").click(function(){})这样的JavaScript代码并且在想“$('#x')是什么”?如果这些对你想天书一样,请往下读.如果你认为这些代码不可能是真的,请浏览一些jQuery例子,他们都是这种结构. 这篇文章覆盖了像下面一样吓人的代码片段中涉及的关键概念.我们以一个长例子开始,这个长例子是基于一个让一个正方形运动的简单例子(a simple example of animating a square).你可能不需要

5个最顶级jQuery图表类库插件-Charting plugin

转载: http://www.cnblogs.com/chu888chu888/archive/2012/12/22/2828962.html 作者:Leonel Hilario翻译:Terry li - GBin1.com英文: 5 Top jQuery Chart Libraries for Interactive Charts 目前对于简单快速的开发图的需要使得大家需要找到一种相对简单的方式来开发互动的图表.jQuery和其他js类库使得我们可以更容易的在(X)HTML中访问数据的呈现.

初译 Support Vector Machines:A Simple Tutorial(一)

从本次开始我将开始尝试着逐章翻译一下 Alexey Nefedov的<Support Vector Machines:A Simple Tutorial>这本教材,这可是我们导师极力推荐的SVM教材,看了好久一直感觉一脸懵逼,索性开坑翻译一下吧,也当是加深理解,毕竟我也是一知半解,如果翻译的有不对的地方还望大佬们斧正,欢迎提意见,欢迎讨论. 嗯,就是这样. (一)Introduction 在本章节中将会介绍一些用于定义支持向量机(SVM)的基础的概念,这些概念对于理解SVM至关重要,假定读者了

jquery file upload without other plugin

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> </head> <body&g

初译 Support Vector Machines:A Simple Tutorial(二)

(二)Maximum margin hyperplane for linearly separable classes (线性可分的数据的最大间隔分类器) 接上文,假设SVM分类器是由两种线性可分的数据集训练而成,其决定函数(decision function)为:                                     (2.1) 其中为定义该超平面的公式,该超平面对于训练集拥有最大的margin,并且相对于两种训练集的距离相等(见下图) 在本节中,我们会讨论一种一个关于超平面

jQuery中的100个技巧(译)

1.当document文档就绪时执行JavaScript代码. 我们为什么使用jQuery库呢?原因之一就在于我们可以使jQuery代码在各种不同的浏览器和存在bug的浏览器上完美运行. <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> <script> // Different ways to achieve the Document Ready event //

The ultimate jQuery Plugin List(终极jQuery插件列表)

下面的文章可能出自一位奥地利的作者,  列出很多jQuery的插件.类似的网站:http://jquerylist.com/原文地址: http://www.kollermedia.at/archive/2007/11/21/the-ultimate-jquery-plugin-list/ jQuery is definitely my favourite Javascript Library and this ultimate jQuery Plugin List is for all oth

jQuery中的100个技巧

1.当document文档就绪时执行JavaScript代码. 我们为什么使用jQuery库呢?原因之一就在于我们可以使jQuery代码在各种不同的浏览器和存在bug的浏览器上完美运行. <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> <script> // Different ways to achieve the Document Ready event //