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