跟我一起學(xué)寫jQuery插件開(kāi)發(fā)方法(附完整實(shí)例及下載)
更新時(shí)間:2010年04月01日 23:37:51 作者:
jQuery如此流行,各式各樣的jQuery插件也是滿天飛。你有沒(méi)有想過(guò)把自己的一些常用的JS功能也寫成jQuery插件呢?如果你的答案是肯定的,那么來(lái)吧!和我一起學(xué)寫jQuery插件吧!
很多公司的前端設(shè)計(jì)開(kāi)發(fā)人員都是女孩子,而這些女孩子很多JavaScript技能都不是很好。而前端開(kāi)發(fā)過(guò)程中,JavaScript技能又是必不可少的。所以,如果前端小MM正在為某個(gè)JavaScript效果發(fā)愁的時(shí)候,你瀟灑的過(guò)去,然后對(duì)她說(shuō):“嗨,美女,用這個(gè)吧。這是我寫的一個(gè)jQuery插件?!蔽蚁牖旧夏愕娜松笫戮湍芎芸旖鉀Q。
先想好做個(gè)什么功能
這是第一步,也是很重要的一步,鑒于咱們都是剛學(xué)習(xí)寫jQuery插件,所以,這個(gè)功能一定要簡(jiǎn)單一些。不要想一口就吃個(gè)胖子,咱也吃不了。咱還是撿個(gè)瘦的下手吧。但是,這個(gè)功能也不能太無(wú)聊,如果無(wú)聊到幾乎沒(méi)用處,就算做好了也是扔到馬桶里,不會(huì)持續(xù)更新,也便不會(huì)持續(xù)進(jìn)步了。
我最終選擇的是:美化表格,讓表格的奇偶行顏色不同,然后鼠標(biāo)移到某行上,某行可以高亮顯示。功能簡(jiǎn)單又實(shí)用,不錯(cuò),不錯(cuò)。呵呵~~
不急著寫,先想想實(shí)現(xiàn)原理
還不急,先想想實(shí)現(xiàn)原理。必要的時(shí)候,先寫出簡(jiǎn)單的實(shí)現(xiàn)的原型。
我的這個(gè)美化表格的例子,實(shí)現(xiàn)原理倒是簡(jiǎn)單,無(wú)非就是找到表格的奇偶行,然后添加不同的class,活動(dòng)行高亮顯示也很簡(jiǎn)單,只要判斷mouseover事件,然后添加一個(gè)class,mouseout的時(shí)候,再去掉這個(gè)class即可。
一個(gè)通用的框架
在動(dòng)手寫自己的jQuery插件之前,自然是先研究一下別人寫的插件了。其實(shí)寫jQuery也基本有一個(gè)通用的框架。行,那咱也把這框架照搬過(guò)來(lái)吧。
(function($){
$.fn.yourName = function(options){
//各種屬性、參數(shù)
}
var options = $.extend(defaults, options);
this.each(function(){
//插件實(shí)現(xiàn)代碼
});
};
})(jQuery);
有了這個(gè),咱就可以往里面套東西了。
名號(hào)、參數(shù)和屬性
好不容易開(kāi)始闖蕩江湖了,一定要有一個(gè)響亮的名號(hào)才行,這樣走在江湖上,才能夠?qū)?,夠威風(fēng)。不信,你聽(tīng)聽(tīng)人家“中國(guó)牙防組”!所以,咱這里一定要起個(gè)響亮的名號(hào),一定要簡(jiǎn)單、明了、夠權(quán)威。所以,決定了,就叫做“tableUI”了!
參數(shù)和屬性也很簡(jiǎn)單,無(wú)非就是三個(gè)class的名稱。就叫做:evenRowClass、oddRowClass和activeRowClass吧。
所以,上面的框架,咱就把上半身給填上了。
(function($){
$.fn.tableUI = function(options){
var defaults = {
evenRowClass:"evenRow",
oddRowClass:"oddRow",
activeRowClass:"activeRow"
}
var options = $.extend(defaults, options);
this.each(function(){
//實(shí)現(xiàn)代碼
});
};
})(jQuery);
這里重點(diǎn)說(shuō)一下這一句:
var options = $.extend(defaults, options);
看上去很屌的一句,其實(shí)就是合并多個(gè)對(duì)象為一個(gè)。這里就是,如果你在調(diào)用的時(shí)候?qū)懥诵碌膮?shù),就用你新的參數(shù),如果沒(méi)有寫,就用默認(rèn)的參數(shù)。想進(jìn)一步了解的朋友,可以參考jquery的官方文檔: http://api.jquery.com/jQuery.extend/
開(kāi)始下半身吧
ok,上半身填補(bǔ)完了,咱就可以填補(bǔ)下半身吧。無(wú)非就是找到基數(shù)行和偶數(shù)行(感謝jQuery提供了類似tr:even這種寫法,使其及其簡(jiǎn)單),然后添加上相應(yīng)的class。然后再給所有的tr,綁定mouseover和mouseout事件即可。下半身代碼如下:
(function($){
$.fn.tableUI = function(options){
var defaults = {
evenRowClass:"evenRow",
oddRowClass:"oddRow",
activeRowClass:"activeRow"
}
var options = $.extend(defaults, options);
this.each(function(){
var thisTable=$(this);
//添加奇偶行顏色
$(thisTable).find("tr:even").addClass(options.evenRowClass);
$(thisTable).find("tr:odd").addClass(options.oddRowClass);
//添加活動(dòng)行顏色
$(thisTable).find("tr").bind("mouseover",function(){
$(this).addClass(options.activeRowClass);
});
$(thisTable).find("tr").bind("mouseout",function(){
$(this).removeClass(options.activeRowClass);
});
});
};
})(jQuery);
最重要的一步!
也許有些朋友覺(jué)得這樣就算是完成了。但是切切相反,我們還有最重要的一步?jīng)]有完成,那就是一定要在插件上方,寫上插件的名稱、版本號(hào)、完成日期、作者,作者的聯(lián)系方式、出生日期、三圍……等等。因?yàn)橹挥羞@樣才能顯的這個(gè)插件夠?qū)I(yè)。
/*
* tableUI 0.1
* Copyright (c) 2009 JustinYoung http://justinyoung.cnblogs.com/
* Date: 2010-03-30
* 使用tableUI可以方便地將表格提示使用體驗(yàn)。先提供的功能有奇偶行顏色交替,鼠標(biāo)移上高亮顯示
*/
(function($){
$.fn.tableUI = function(options){
var defaults = {
evenRowClass:"evenRow",
oddRowClass:"oddRow",
activeRowClass:"activeRow"
}
var options = $.extend(defaults, options);
this.each(function(){
var thisTable=$(this);
//添加奇偶行顏色
$(thisTable).find("tr:even").addClass(options.evenRowClass);
$(thisTable).find("tr:odd").addClass(options.oddRowClass);
//添加活動(dòng)行顏色
$(thisTable).find("tr").bind("mouseover",function(){
$(this).addClass(options.activeRowClass);
});
$(thisTable).find("tr").bind("mouseout",function(){
$(this).removeClass(options.activeRowClass);
});
});
};
})(jQuery);
演示地址
實(shí)例下載地址
先想好做個(gè)什么功能
這是第一步,也是很重要的一步,鑒于咱們都是剛學(xué)習(xí)寫jQuery插件,所以,這個(gè)功能一定要簡(jiǎn)單一些。不要想一口就吃個(gè)胖子,咱也吃不了。咱還是撿個(gè)瘦的下手吧。但是,這個(gè)功能也不能太無(wú)聊,如果無(wú)聊到幾乎沒(méi)用處,就算做好了也是扔到馬桶里,不會(huì)持續(xù)更新,也便不會(huì)持續(xù)進(jìn)步了。
我最終選擇的是:美化表格,讓表格的奇偶行顏色不同,然后鼠標(biāo)移到某行上,某行可以高亮顯示。功能簡(jiǎn)單又實(shí)用,不錯(cuò),不錯(cuò)。呵呵~~
不急著寫,先想想實(shí)現(xiàn)原理
還不急,先想想實(shí)現(xiàn)原理。必要的時(shí)候,先寫出簡(jiǎn)單的實(shí)現(xiàn)的原型。
我的這個(gè)美化表格的例子,實(shí)現(xiàn)原理倒是簡(jiǎn)單,無(wú)非就是找到表格的奇偶行,然后添加不同的class,活動(dòng)行高亮顯示也很簡(jiǎn)單,只要判斷mouseover事件,然后添加一個(gè)class,mouseout的時(shí)候,再去掉這個(gè)class即可。
一個(gè)通用的框架
在動(dòng)手寫自己的jQuery插件之前,自然是先研究一下別人寫的插件了。其實(shí)寫jQuery也基本有一個(gè)通用的框架。行,那咱也把這框架照搬過(guò)來(lái)吧。
復(fù)制代碼 代碼如下:
(function($){
$.fn.yourName = function(options){
//各種屬性、參數(shù)
}
var options = $.extend(defaults, options);
this.each(function(){
//插件實(shí)現(xiàn)代碼
});
};
})(jQuery);
有了這個(gè),咱就可以往里面套東西了。
名號(hào)、參數(shù)和屬性
好不容易開(kāi)始闖蕩江湖了,一定要有一個(gè)響亮的名號(hào)才行,這樣走在江湖上,才能夠?qū)?,夠威風(fēng)。不信,你聽(tīng)聽(tīng)人家“中國(guó)牙防組”!所以,咱這里一定要起個(gè)響亮的名號(hào),一定要簡(jiǎn)單、明了、夠權(quán)威。所以,決定了,就叫做“tableUI”了!
參數(shù)和屬性也很簡(jiǎn)單,無(wú)非就是三個(gè)class的名稱。就叫做:evenRowClass、oddRowClass和activeRowClass吧。
所以,上面的框架,咱就把上半身給填上了。
復(fù)制代碼 代碼如下:
(function($){
$.fn.tableUI = function(options){
var defaults = {
evenRowClass:"evenRow",
oddRowClass:"oddRow",
activeRowClass:"activeRow"
}
var options = $.extend(defaults, options);
this.each(function(){
//實(shí)現(xiàn)代碼
});
};
})(jQuery);
這里重點(diǎn)說(shuō)一下這一句:
復(fù)制代碼 代碼如下:
var options = $.extend(defaults, options);
看上去很屌的一句,其實(shí)就是合并多個(gè)對(duì)象為一個(gè)。這里就是,如果你在調(diào)用的時(shí)候?qū)懥诵碌膮?shù),就用你新的參數(shù),如果沒(méi)有寫,就用默認(rèn)的參數(shù)。想進(jìn)一步了解的朋友,可以參考jquery的官方文檔: http://api.jquery.com/jQuery.extend/
開(kāi)始下半身吧
ok,上半身填補(bǔ)完了,咱就可以填補(bǔ)下半身吧。無(wú)非就是找到基數(shù)行和偶數(shù)行(感謝jQuery提供了類似tr:even這種寫法,使其及其簡(jiǎn)單),然后添加上相應(yīng)的class。然后再給所有的tr,綁定mouseover和mouseout事件即可。下半身代碼如下:
復(fù)制代碼 代碼如下:
(function($){
$.fn.tableUI = function(options){
var defaults = {
evenRowClass:"evenRow",
oddRowClass:"oddRow",
activeRowClass:"activeRow"
}
var options = $.extend(defaults, options);
this.each(function(){
var thisTable=$(this);
//添加奇偶行顏色
$(thisTable).find("tr:even").addClass(options.evenRowClass);
$(thisTable).find("tr:odd").addClass(options.oddRowClass);
//添加活動(dòng)行顏色
$(thisTable).find("tr").bind("mouseover",function(){
$(this).addClass(options.activeRowClass);
});
$(thisTable).find("tr").bind("mouseout",function(){
$(this).removeClass(options.activeRowClass);
});
});
};
})(jQuery);
最重要的一步!
也許有些朋友覺(jué)得這樣就算是完成了。但是切切相反,我們還有最重要的一步?jīng)]有完成,那就是一定要在插件上方,寫上插件的名稱、版本號(hào)、完成日期、作者,作者的聯(lián)系方式、出生日期、三圍……等等。因?yàn)橹挥羞@樣才能顯的這個(gè)插件夠?qū)I(yè)。
復(fù)制代碼 代碼如下:
/*
* tableUI 0.1
* Copyright (c) 2009 JustinYoung http://justinyoung.cnblogs.com/
* Date: 2010-03-30
* 使用tableUI可以方便地將表格提示使用體驗(yàn)。先提供的功能有奇偶行顏色交替,鼠標(biāo)移上高亮顯示
*/
(function($){
$.fn.tableUI = function(options){
var defaults = {
evenRowClass:"evenRow",
oddRowClass:"oddRow",
activeRowClass:"activeRow"
}
var options = $.extend(defaults, options);
this.each(function(){
var thisTable=$(this);
//添加奇偶行顏色
$(thisTable).find("tr:even").addClass(options.evenRowClass);
$(thisTable).find("tr:odd").addClass(options.oddRowClass);
//添加活動(dòng)行顏色
$(thisTable).find("tr").bind("mouseover",function(){
$(this).addClass(options.activeRowClass);
});
$(thisTable).find("tr").bind("mouseout",function(){
$(this).removeClass(options.activeRowClass);
});
});
};
})(jQuery);
演示地址
實(shí)例下載地址
相關(guān)文章
jquery 實(shí)現(xiàn)表單驗(yàn)證功能代碼(簡(jiǎn)潔)
jquery 實(shí)現(xiàn)表單驗(yàn)證功能代碼,代碼比較簡(jiǎn)潔,需要的朋友可以參考下2012-07-07寫得不錯(cuò)的jquery table鼠標(biāo)經(jīng)過(guò)變色代碼
鼠標(biāo)經(jīng)過(guò)table變色的效果,想必大家都有遇到過(guò)吧,其實(shí)實(shí)現(xiàn)并不難,在本文為大家詳細(xì)介紹下jquery是如何實(shí)現(xiàn)的,感興趣的朋友可以參看下2013-09-09jQuery實(shí)現(xiàn)條件搜索查詢、實(shí)時(shí)取值及升降序排序的方法分析
這篇文章主要介紹了jQuery實(shí)現(xiàn)條件搜索查詢、實(shí)時(shí)取值及升降序排序的方法,結(jié)合實(shí)例形式分析了jQuery針對(duì)頁(yè)面元素屬性操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-05-05JQuery.closest(),parent(),parents()尋找父結(jié)點(diǎn)
在50個(gè)必備的實(shí)用jQuery代碼段看到關(guān)于closest()方法的介紹,考慮到開(kāi)發(fā)過(guò)程中經(jīng)常有找爹的需求,以前用的都是parent()/parents()方法(還經(jīng)常找不到?。?,所以就此研究對(duì)比一下!2012-02-02jQuery實(shí)現(xiàn)圖片上傳和裁剪插件Croppie
這篇文章主要介紹了jQuery實(shí)現(xiàn)圖片上傳和裁剪插件Croppie,實(shí)現(xiàn)最常見(jiàn)的各用戶系統(tǒng)要求用戶上傳和裁剪頭像的應(yīng)用,感興趣的小伙伴們可以參考一下2015-11-11jQuery獲取動(dòng)態(tài)添加元素的方法詳解
這篇文章主要介紹了jQuery獲取動(dòng)態(tài)添加元素的方法詳解,jQuery 是一個(gè)高效、精簡(jiǎn)并且功能豐富的 JavaScript 工具庫(kù),它提供的 API 易于使用且兼容眾多瀏覽器,這讓諸如 HTML 文檔遍歷和操作、事件處理、動(dòng)畫和 Ajax 操作更加簡(jiǎn)單,需要的朋友可以參考下2023-08-08jQuery將所有被選中的checkbox某個(gè)屬性值連接成字符串的方法
這篇文章主要介紹了jQuery將所有被選中的checkbox某個(gè)屬性值連接成字符串的方法,可實(shí)現(xiàn)將選中屬性值連接成字符串的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01