- 浏览: 145587 次
文章分类
最新评论
-
yajie:
写的一知半解,丁你个费!
数据挖掘(协同过滤、关联推荐、聚类分类)一些资料 -
xo_knight:
7.0有什么新的功能和改变吗
MyEclipse7.0相关备忘 -
kjj:
# <interceptor-ref name=&quo ...
Struts2 Action方法执行两次的问题?model-driven奇怪现象 -
xuhuasen:
我工程只是在ajax异步发送action方法时才执行了两次,检 ...
Struts2 Action方法执行两次的问题?model-driven奇怪现象 -
azure1898:
可能是你的提交按钮是submit类型,并且在按钮的onclic ...
Struts2 Action方法执行两次的问题?model-driven奇怪现象
- jQuery.foo = function() {
- alert('This is a test. This is only a test.');
- };
- jQuery.foo = function() {
- alert('This is a test. This is only a test.');
- };
- jQuery.bar = function(param) {
- alert('This function takes a parameter, which is "' + param + '".');
- };
- 调用时和一个函数的一样的:jQuery.foo();jQuery.bar();或者$.foo();$.bar('bar');
1.3使用jQuery.extend(object);
- jQuery.extend({
- foo: function() {
- alert('This is a test. This is only a test.');
- },
- bar: function(param) {
- alert('This function takes a parameter, which is "' + param +'".');
- }
- });
- jQuery.myPlugin = {
- foo:function() {
- alert('This is a test. This is only a test.');
- },
- bar:function(param) {
- alert('This function takes a parameter, which is "' + param + '".');
- }
- };
- 采用命名空间的函数仍然是全局函数,调用时采用的方法:
- $.myPlugin.foo();
- $.myPlugin.bar('baz');
- (function($){
- $.fn.extend({
- pluginName:function(opt,callback){
- // Our plugin implementation code goes here.
- }
- })
- })(jQuery);
形式2:
- (function($) {
- $.fn.pluginName = function() {
- // Our plugin implementation code goes here.
- };
- })(jQuery);
上面定义了一个jQuery函数,形参是$,函数定义完成之后,把jQuery这个实参传递进去.立即调用执行。这样的好处是,我们在写jQuery插件时,也可以使用$这个别名,而不会与prototype引起冲突.
2.1 在JQuery名称空间下申明一个名字
- $.fn.hilight = function() {
- // Our plugin implementation code goes here.
- };
- 我们的插件通过这样被调用:
- $('#myDiv').hilight();
$.fn.hilight = function() { // Our plugin implementation code goes here. }; 我们的插件通过这样被调用: $('#myDiv').hilight();
2.2 接受options参数以控制插件的行为
- // plugin definition
- $.fn.hilight = function(options) {
- var defaults = {
- foreground: 'red',
- background: 'yellow'
- };
- // Extend our default options with those provided.
- var opts = $.extend(defaults, options);
- // Our plugin implementation code goes here.
- };
- 我们的插件可以这样被调用:
- $('#myDiv').hilight({
- foreground: 'blue'
- });
// plugin definition $.fn.hilight = function(options) { var defaults = { foreground: 'red', background: 'yellow' }; // Extend our default options with those provided. var opts = $.extend(defaults, options); // Our plugin implementation code goes here. }; 我们的插件可以这样被调用: $('#myDiv').hilight({ foreground: 'blue' });
- // plugin definition
- $.fn.hilight = function(options) {
- // Extend our default options with those provided.
- // Note that the first arg to extend is an empty object -
- // this is to keep from overriding our "defaults" object.
- var opts = $.extend({}, $.fn.hilight.defaults, options);
- // Our plugin implementation code goes here.
- };
- // plugin defaults - added as a property on our plugin function
- $.fn.hilight.defaults = {
- foreground: 'red',
- background: 'yellow'
- };
- 现在使用者可以包含像这样的一行在他们的脚本里:
- //这个只需要调用一次,且不一定要在ready块中调用
- $.fn.hilight.defaults.foreground = 'blue';
- 接下来我们可以像这样使用插件的方法,结果它设置蓝色的前景色:
- $('#myDiv').hilight();
// plugin definition $.fn.hilight = function(options) { // Extend our default options with those provided. // Note that the first arg to extend is an empty object - // this is to keep from overriding our "defaults" object. var opts = $.extend({}, $.fn.hilight.defaults, options); // Our plugin implementation code goes here. }; // plugin defaults - added as a property on our plugin function $.fn.hilight.defaults = { foreground: 'red', background: 'yellow' }; 现在使用者可以包含像这样的一行在他们的脚本里: //这个只需要调用一次,且不一定要在ready块中调用 $.fn.hilight.defaults.foreground = 'blue'; 接下来我们可以像这样使用插件的方法,结果它设置蓝色的前景色: $('#myDiv').hilight();
- // plugin definition
- $.fn.hilight = function(options) {
- // iterate and reformat each matched element
- return this.each(function() {
- var $this = $(this);
- // ...
- var markup = $this.html();
- // call our format function
- markup = $.fn.hilight.format(markup);
- $this.html(markup);
- });
- };
- // define our format function
- $.fn.hilight.format = function(txt) {
- return '<strong>' + txt + '</strong>';
- };
我们很容易的支持options对象中的其他的属性通过允许一个回调函数来覆盖默认的设置。这是另外一个出色的方法来修改你的插件。这里展示的技巧是进一步有效的暴露format函数进而让他能被重新定义。通过这技巧,是其他人能够传递他们自己设置来覆盖你的插件,换句话说,这样其他人也能够为你的插件写插件。
考虑到这个篇文章中我们建立的无用的插件,你也许想知道究竟什么时候这些会有用。一个真实的例子是Cycle插件.这个Cycle插件是一个滑动显示插件,他能支持许多内部变换作用到滚动,滑动,渐变消失等。但是实际上,没有办法定义也许会应用到滑动变化上每种类型的效果。那是这种扩展性有用的地方。 Cycle插件对使用者暴露"transitions"对象,使他们添加自己变换定义。插件中定义就像这样:
$.fn.cycle.transitions = {
- (function($) {
- // plugin definition
- $.fn.hilight = function(options) {
- debug(this);
- // ...
- };
- // private function for debugging
- function debug($obj) {
- if (window.console && window.console.log)
- window.console.log('hilight selection count: ' + $obj.size());
- };
- // ...
- })(jQuery);
(function($) { // plugin definition $.fn.hilight = function(options) { debug(this); // ... }; // private function for debugging function debug($obj) { if (window.console && window.console.log) window.console.log('hilight selection count: ' + $obj.size()); }; // ... })(jQuery);
- $.fn.hilight = function(options) {
- // ...
- // build main options before element iteration
- var opts = $.extend({}, $.fn.hilight.defaults, options);
- return this.each(function() {
- var $this = $(this);
- // build element specific options
- var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
- //...
$.fn.hilight = function(options) { // ... // build main options before element iteration var opts = $.extend({}, $.fn.hilight.defaults, options); return this.each(function() { var $this = $(this); // build element specific options var o = $.meta ? $.extend({}, opts, $this.data()) : opts; //...
这些变动行做了一些事情:它是测试Metadata插件是否被安装如果它被安装了,它能扩展我们的options对象通过抽取元数据这行作为最后一个参数添加到JQuery.extend,那么它将会覆盖任何其它选项设置。现在我们能从"markup”处驱动行为,如果我们选择了“markup”:
- <!-- markup -->
- <div class="hilight { background: 'red', foreground: 'white' }">
- Have a nice day!
- </div>
- <div class="hilight { foreground: 'orange' }">
- Have a nice day!
- </div>
- <div class="hilight { background: 'green' }">
- Have a nice day!
- </div>
- 现在我们能高亮哪些div仅使用一行脚本:
- $('.hilight').hilight();
下面使我们的例子完成后的代码:
- // 创建一个闭包
- (function($) {
- // 插件的定义
- $.fn.hilight = function(options) {
- debug(this);
- // build main options before element iteration
- var opts = $.extend({}, $.fn.hilight.defaults, options);
- // iterate and reformat each matched element
- return this.each(function() {
- $this = $(this);
- // build element specific options
- var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
- // update element styles
- $this.css({
- backgroundColor: o.background,
- color: o.foreground
- });
- var markup = $this.html();
- // call our format function
- markup = $.fn.hilight.format(markup);
- $this.html(markup);
- });
- };
- // 私有函数:debugging
- function debug($obj) {
- if (window.console && window.console.log)
- window.console.log('hilight selection count: ' + $obj.size());
- };
- // 定义暴露format函数
- $.fn.hilight.format = function(txt) {
- return '<strong>' + txt + '</strong>';
- };
- // 插件的defaults
- $.fn.hilight.defaults = {
- foreground: 'red',
- background: 'yellow'
- };
- // 闭包结束
- })(jQuery);
// 创建一个闭包 (function($) { // 插件的定义 $.fn.hilight = function(options) { debug(this); // build main options before element iteration var opts = $.extend({}, $.fn.hilight.defaults, options); // iterate and reformat each matched element return this.each(function() { $this = $(this); // build element specific options var o = $.meta ? $.extend({}, opts, $this.data()) : opts; // update element styles $this.css({ backgroundColor: o.background, color: o.foreground }); var markup = $this.html(); // call our format function markup = $.fn.hilight.format(markup); $this.html(markup); }); }; // 私有函数:debugging function debug($obj) { if (window.console && window.console.log) window.console.log('hilight selection count: ' + $obj.size()); }; // 定义暴露format函数 $.fn.hilight.format = function(txt) { return '<strong>' + txt + '</strong>'; }; // 插件的defaults $.fn.hilight.defaults = { foreground: 'red', background: 'yellow' }; // 闭包结束 })(jQuery);
jQuery.extend(object); 为扩展jQuery类本身.为类添加新的方法。
发表评论
-
JavaScript应用技巧集合
2009-11-21 01:01 907里我将会对这些应用技巧进行集中描述,如果你觉得遗漏了 ... -
document 文挡对象 - JavaScript脚本语言描述
2009-07-03 14:26 1159document 文挡对象 - JavaScript脚本语 ... -
Web开发工具大集合
2009-04-10 15:07 1521作者:Klaus Komenda , 翻译:butwho ... -
javascript收藏
2009-03-10 11:10 1227Javascript解析URL的方法 UR ... -
FCKeditor/ASP.NET扩展配置优化-转
2009-02-17 11:17 1830一、自定义 FCKeditor 的 B ...
相关推荐
### jQuery插件开发全解析 #### 一、引言 jQuery作为一款优秀的JavaScript库,在前端开发领域具有举足轻重的地位。它简化了许多常见的JavaScript任务,使得开发者能够更轻松地处理DOM操作、事件处理以及Ajax交互等...
### jQuery插件开发全解析知识点 #### 1. jQuery插件开发概述 在jQuery插件开发中,开发者可以创建两种类型的插件:类级别的插件和对象级别的插件。类级别的插件允许开发者为jQuery对象添加新的全局函数,类似于在...
在《jQuery插件开发全解析.pdf》这份文档中,作者可能详细阐述了插件开发的各个步骤,包括如何封装私有函数、如何处理回调函数、如何利用jQuery的data方法存储插件状态,以及如何优化性能。此外,还可能涉及如何与...
### Jquery插件开发全解析 #### 一、类级别的插件开发 在Jquery插件开发中,类级别的插件开发是指向Jquery添加新的全局函数,这实质上是给Jquery类本身添加方法。这类插件开发的直接目标是在Jquery的命名空间中...
jQuery插件开发全解析 jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法。jQuery 的全局函数就是属于jQuery命名空间的函数,另一种是对象级别的插件...
《jQuery 360度旋转插件:elbeanio-jquery.tagsphere深度解析》 在网页设计和开发中,动态视觉效果常常能提升用户体验,其中360度旋转展示是常见的一种手法。jQuery,作为一款轻量级、功能强大的JavaScript库,提供...
全国城市地区Jquery插件是一种基于JavaScript库Jquery开发的工具,主要目的是为了方便开发者在网页应用中实现省市区级联选择的功能。这种插件在处理地理数据,特别是在需要用户输入或选择具体地理位置的场景中非常...
《全面解析jQuery与EasyUI插件:jqGrid、Tree与Form的应用》 在Web开发领域,jQuery库以其简洁的API和强大的功能深受开发者喜爱。它极大地简化了JavaScript操作DOM、事件处理、动画以及Ajax交互。而EasyUI是基于...
**jQuery:全方位解析与实战应用** jQuery是一款广泛应用于前端开发的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画设计以及Ajax交互。这个压缩包中的资料相当齐全,包含了许多关于jQuery的...
《jQuery 360度旋转插件Rollerblade深度解析》 在当今的网页设计中,用户体验已经成为衡量网站质量的重要标准之一。为了提升用户对产品的感知和互动性,360度旋转展示技术应运而生。jQuery作为一款强大的JavaScript...
在网页开发中,分页是一种常见的用户界面设计,用于处理大量数据时的高效展示和浏览。Jquery+Json实现无刷新...开发者可以通过这样的插件轻松地在自己的项目中实现动态分页,同时避免了全页面刷新带来的延迟和不便。
**jQuery制作信用卡插件** 在Web开发中,为了提高用户体验,常常需要创建各种交互式的界面元素,其中之一就是信用卡输入插件。本项目就是一个基于jQuery的信用卡插件示例,它允许用户自定义信用卡信息,如卡号、...
在IT行业中,jQuery、JSON和Struts2是三个非常重要的技术组件,它们分别在Web开发的不同层面上发挥着关键作用。下面将详细解释这三个技术及其相互间的结合。 **jQuery** 是一个快速、简洁的JavaScript库,它使得...
在后台管理系统中,jQuery插件能够极大地简化开发过程,提高工作效率。本文将深入探讨"jQuery后台管理插件",并结合其在实际项目中的应用进行详细解析。 首先,"jQuery后台管理插件"主要服务于Web应用的后台界面,...
本文将详细解析"支持弹出多个窗口的jQuery弹窗插件",即popupWindow.js,它是jQuery插件家族中的一个重要成员,主要用于创建具有多种功能的弹出窗口。 首先,popupWindow.js的核心特性是它支持弹出多个窗口,这意味...
- **强大的插件生态系统**:由于 JQuery 的普及度高,社区围绕它开发了大量的插件,覆盖了几乎所有的需求领域。 ##### 1.2 非侵入式 JavaScript 这一节介绍了非侵入式 JavaScript 的概念。传统的做法是将 ...
《jQuery自定义调查问卷插件深度解析》 在IT领域,尤其在Web开发中,创建交互性强、用户体验良好的调查问卷是常有的需求。jQuery作为一款轻量级的JavaScript库,以其简洁的API和丰富的插件生态,使得实现这一功能变...