跟我一起學(xué)寫(xiě)jQuery插件開(kāi)發(fā)方法(附完整實(shí)例及下載)
先想好做個(gè)什么功能
這是第一步,也是很重要的一步,鑒于咱們都是剛學(xué)習(xí)寫(xiě)jQuery插件,所以,這個(gè)功能一定要簡(jiǎn)單一些。不要想一口就吃個(gè)胖子,咱也吃不了。咱還是撿個(gè)瘦的下手吧。但是,這個(gè)功能也不能太無(wú)聊,如果無(wú)聊到幾乎沒(méi)用處,就算做好了也是扔到馬桶里,不會(huì)持續(xù)更新,也便不會(huì)持續(xù)進(jìn)步了。
我最終選擇的是:美化表格,讓表格的奇偶行顏色不同,然后鼠標(biāo)移到某行上,某行可以高亮顯示。功能簡(jiǎn)單又實(shí)用,不錯(cuò),不錯(cuò)。呵呵~~
不急著寫(xiě),先想想實(shí)現(xiàn)原理
還不急,先想想實(shí)現(xiàn)原理。必要的時(shí)候,先寫(xiě)出簡(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)手寫(xiě)自己的jQuery插件之前,自然是先研究一下別人寫(xiě)的插件了。其實(shí)寫(xiě)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的名稱(chēng)。就叫做: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)有寫(xiě),就用默認(rèn)的參數(shù)。想進(jìn)一步了解的朋友,可以參考jquery的官方文檔: http://api.jquery.com/jQuery.extend/
開(kāi)始下半身吧
ok,上半身填補(bǔ)完了,咱就可以填補(bǔ)下半身吧。無(wú)非就是找到基數(shù)行和偶數(shù)行(感謝jQuery提供了類(lèi)似tr:even這種寫(xiě)法,使其及其簡(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)]有完成,那就是一定要在插件上方,寫(xiě)上插件的名稱(chē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í)例下載地址
相關(guān)文章
jquery 實(shí)現(xiàn)表單驗(yàn)證功能代碼(簡(jiǎn)潔)
jquery 實(shí)現(xiàn)表單驗(yàn)證功能代碼,代碼比較簡(jiǎn)潔,需要的朋友可以參考下2012-07-07寫(xiě)得不錯(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)條件搜索查詢(xún)、實(shí)時(shí)取值及升降序排序的方法分析
這篇文章主要介紹了jQuery實(shí)現(xiàn)條件搜索查詢(xú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)的各用戶(hù)系統(tǒng)要求用戶(hù)上傳和裁剪頭像的應(yīng)用,感興趣的小伙伴們可以參考一下2015-11-11jQuery獲取動(dòng)態(tài)添加元素的方法詳解
這篇文章主要介紹了jQuery獲取動(dòng)態(tài)添加元素的方法詳解,jQuery 是一個(gè)高效、精簡(jiǎn)并且功能豐富的 JavaScript 工具庫(kù),它提供的 API 易于使用且兼容眾多瀏覽器,這讓諸如 HTML 文檔遍歷和操作、事件處理、動(dòng)畫(huà)和 Ajax 操作更加簡(jiǎn)單,需要的朋友可以參考下2023-08-08jQuery將所有被選中的checkbox某個(gè)屬性值連接成字符串的方法
這篇文章主要介紹了jQuery將所有被選中的checkbox某個(gè)屬性值連接成字符串的方法,可實(shí)現(xiàn)將選中屬性值連接成字符串的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01