jquery插件的开发,jquery组件开发

如何写一个jquery 插件

jquery插件开发模式

创新互联建站于2013年成立,是专业互联网技术服务公司,拥有项目网站设计制作、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元原州做网站,已为上家服务,为原州各地企业和个人服务,联系电话:18982081108

jquery插件一般有三种开发方式:

通过$.extend()来扩展jQuery

通过$.fn 向jQuery添加新的方法

通过$.widget()应用jQuery UI的部件工厂方式创建

第一种$.extend()相对简单,一般很少能够独立开发复杂插件,第三种是一种高级的开发模式,本文也不做介绍。第二种则是一般插件开发用到的方式,本文着重讲讲第二种。

插件开发

第二种插件开发方式一般是如下定义

$.fn.pluginName = function() {

//your code here

}

插件开发,我们一般运用面向对象的思维方式

例如定义一个对象

var Haorooms= function(el, opt) {

this.$element = el,

this.defaults = {

'color': 'red',

'fontSize': '12px',

'textDecoration':'none'

},

this.options = $.extend({}, this.defaults, opt)

}

//定义haorooms的方法

haorooms.prototype = {

changecss: function() {

return this.$element.css({

'color': this.options.color,

'fontSize': this.options.fontSize,

'textDecoration': this.options.textDecoration

});

}

}

$.extend({}, this.defaults, opt)有{}主要是为了创建一个新对象,保留对象的默认值。

$.fn.myPlugin = function(options) {

//创建haorooms的实体

var haorooms= new Haorooms(this, options);

//调用其方法

return Haorooms.changecss();

}

调用这个插件直接如下就可以

$(function() {

$('a').myPlugin({

'color': '#2C9929',

'fontSize': '20px'

});

})

上述开发方法的问题

上面的开发方法存在一个严重的问题,就是定义了一个全局的Haorooms,这样对于插件的兼容等等各个方面都不好。万一别的地方用到了Haorooms,那么你的代码就悲催了!现在我们把上面的代码包装起来,用一个自调用匿名函数(有时又叫块级作用域或者私有作用域)包裹,就不会出现这个问题了!包括js插件的开发,也是一样的,我们用一个自调用匿名函数把自己写的代码包裹起来,就可以了!包裹方法如下:

(function(){

})()

用上面的这个包裹起来,就可以了。

但是还有一个问题,当我们研究大牛的代码的时候,前面经常看到有“;”,那是为了避免代码合并等不必要的错误。

例如,我们随便定义一个函数:

var haoroomsblog=function(){

}

(function(){

})()

由于haoroomsblog这个函数后面没有加分号,导致代码出错,为了避免这类情况的发生,通常这么写!

;(function(){

})()

把你的插件代码包裹在上面里面,就是一个简单的插件了。(注js插件和jquery插件都是如此)

还有一个问题

把你的插件包裹在

;(function(){

})()

基本上可以说是完美了。但是为了让你开发的插件应用更加广泛,兼容性更加好,还要考虑到用插件的人的一些特殊的做法,例如,有些朋友为了避免jquery和zeptojs冲突,将jquery的前缀“$”,修改为“jQuery”,还有些朋友将默认的document等方法修改。为了让你的插件在这些东西修了了的情况下照常运行,那么我们的做法是,把代码包裹在如下里面:

;(function($,window,document,undefined){

//我们的代码。。

})(jQuery,window,document);

就可以避免上面的一些情况了!

至此,你开发的插件就算完美了!

jquery 插件开发,属性,事件,方法写法?

我自己写过许多插件,应该可以解答你的问题。

其实,所谓的方法,属性,事件,都是你自己总结出来的。对于纯正的JS和JQuary来说,这3个都是一种东西。我们常常用了简便写法,因此楼主才觉得这3者不同,其实这些统统都是变量。

只不过,如果变量是个参数,就是:

var temp = "怪蛋";

如果参数是个数组,那么就是:

var temp = {title:'newTab'};

而我们常见的函数,都会写成getVal(a,b,c){}其实写的更符合JS原生态的,是

var getVal = function(a,b,c){} 从这里看出,我们所谓的函数,其实和变量是一种东西。

因此所谓的$('#id').Tabs({onSelect:functuon(){}});这类情况,等于传入的是一个叫onSelect的变量,而这个变量刚好是一个函数类型而已。事实上这个onSelect原本并不存在,是你后来的插件里去调用了而已。你通过英文意思觉得这是“被选中”的意思,其实在这里,仅仅是一个名字而已。只有插件内部写到$(this).on("click",function(){});才真正调取到JS原本的event的click事件。而我们插件中常见的onSelect、onClick、onSuccess都是写插件的人按照自己的喜好和大家喜欢的名字而命名的。

jQuery插件开发原理?

jQuery为开发插件提拱了两个方法,分别是:

jQuery.fn.extend(object); 给jQuery对象添加方法。

jQuery.extend(object); 为扩展jQuery类本身.为类添加新的方法。

fn 是什么东西呢。查看jQuery代码,就不难发现。

jQuery.fn = jQuery.prototype = {

init: function( selector, context ) {//.... 

//......

};

原来 jQuery.fn = jQuery.prototype.对prototype肯定不会陌生啦。虽然 javascript 没有明确的类的概念,但是用类来理解它,会更方便。jQuery便是一个封装得非常好的类,比如我们用 语句 $("#btn1") 会生成一个 jQuery类的实例。

jQuery.fn.extend(object); 对jQuery.prototype进得扩展,就是为jQuery类添加“成员函数”。jQuery类的实例可以使用这个“成员函数”。

比如我们要开发一个插件,做一个特殊的编辑框,当它被点击时,便alert 当前编辑框里的内容。可以这么做:

$.fn.extend({

alertWhileClick:function(){

$(this).click(function(){

alert($(this).val());

});

}

});

$("#input1").alertWhileClick(); //页面上为:input id="input1" type="text"/

$("#input1") 为一个jQuery实例,当它调用成员方法 alertWhileClick后,便实现了扩展,每次被点击时它会先弹出目前编辑里的内容。

jQuery.extend(object); 

为jQuery类添加添加类方法,可以理解为添加静态方法。如:

$.extend({

add:function(a,b){return a+b;}

});

便为 jQuery 添加一个为 add 的 “静态方法”,之后便可以在引入 jQuery 的地方,使用这个方法了,$.add(3,4); //return 7

如何编写JQuery 插件详解

jQuery 如何写插件 -

jQuery插件的开发包括两种:

一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法。jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级别的插件开发,即给jQuery对象添加方法。下面就两种函数的开发做详细的说明。

1、类级别的插件开发

类级别的插件开发最直接的理解就是给jQuery类添加类方法,可以理解为添加静态方法。典型的例子就是$.AJAX()这个函数,将函数定义于jQuery的命名空间中。关于类级别的插件开发可以采用如下几种形式进行扩展:

1.1 

添加一个新的全局函数

添加一个全局函数,我们只需如下定义:

jQuery.foo = 

function() { 

alert('This is a test. This is only a 

test.'); 

}; 

1.2 

增加多个全局函数

添加多个全局函数,可采用如下定义:

Java代码 收藏代码

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插件开发有几种

//类级别插件开发,主要是在jQuery中定义全局方法:

//第一种写法

jQuery.myFunc = function(str){

alert("直接在jquery中定义方法",str)

}

//调用方式 $.myFunc("hello!");

//第二种写法

jQuery.extend({

myFunc:function(str){

alert("extend扩展$的方法",str)

}

})

//调用方式 $.myFunc("hello!");

//第三种写法: 为了不污染全局,挂载一个对象作为命名空间,自定义的所有方法放在这里,保证jQuery全局安全。

jQuery.define={

myFunc:function(str){

alert("命名空间的写法",str)

}

}

//调用方式:$.define.myFunc("hello");

//以上三种是级别插件开发方式,不常用,从调用方式看出,他们是全局执行的,不需要绑定节点对象。

//对象级别插件开发:有规范模板

;(function($){

$.fn.plugin = function(options){

var defaults = {

//各种默认参数

}

var options = $.extend(defaults,options); //传入的参数覆盖默认参数

this.each(function(){

var _this = $(this); //缓存一下插件传进来的节点对象。

//执行内容

})

return $(this); //把节点对象返回去,为了支持链式调用。

}

})(jQuery);

//调用方式

$("selector").plugin({

//自定义参数,json格式

})

如何自己开发一个简单的jquery 插件

现在网上关于js和jquery封装的插件很多,我刚刚接触前端的时候,就很敬佩那些自己写插件的大牛们!因为是他们给网站开发更多的便利,很多网页效果,网上很多现成的插件!那么这些插件是如何写的呢看首先是有扎实的js和jquery技术基础,其次还有一些写插件的方法和技巧。关于js和jquery的技术基础,那是一个慢慢积累的过程。但是关于写插件的一些注意和技巧,本文可以略微介绍一下,方便以后写插件的时候用得到。

jquery插件开发模式

jquery插件一般有三种开发方式:

通过$.extend()来扩展jQuery

通过$.fn 向jQuery添加新的方法

通过$.widget()应用jQuery UI的部件工厂方式创建

第一种$.extend()相对简单,一般很少能够独立开发复杂插件,第三种是一种高级的开发模式,本文也不做介绍。第二种则是一般插件开发用到的方式,本文着重讲讲第二种。


名称栏目:jquery插件的开发,jquery组件开发
转载来于:http://scyanting.com/article/dssdgpg.html