天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

jQuery插件 tabBox實現代碼

查了一下jq的官方插件編寫文檔(http://docs.jquery.com/Plugins/Authoring)以及文檔中推薦的Mike Alsup寫的一篇A Plugin Development Pattern。英語不是很好,但還是努力看下來(既學習到知識又能練習英語,何樂不為),照貓畫虎的寫了一個處女作――tabBox。

  顧名思義,這個插件就是方便的產生具有tab選項卡功能“盒子”的。看圖一下就明白

這樣功能在網頁上是非常腸炎寧個的,不論前臺后臺。

  在這,我首先提供了3個參數用于自定義插件,
復制代碼 代碼如下:
$.fn.tabBox.defaults = {
width : 260,
height : 200,
basePath : "tabBox/"
};

width和height定義“盒子”的寬度和高度,basePath用于定義使用插件的頁面對插件文件夾的相對路徑。這個選項的出現時不得已而為之,因為選項卡的樣式中用到了圖片,而必須要有一個基準路徑才能正確找到圖片的路徑。這也是參照了一個叫jqtransform(http://www.dfc-e.com/metiers/multimedia/opensource/jqtransform/)的插件的做法,他也有個參數用于指定圖片文件夾所在的位置。當然還有一種做法,就是想WebUI(http://www.jqueryui.com/)一樣,樣式寫到css文件里,這樣圖片的引用就是先對與css文件的路徑了,而這兩個都是插件的組成部分,相對路勁是不變的。所以不用提供這個路徑了。只是由于這個插件用到的樣式比較少,所以沒有采用這個方法。

  插件的原理很簡單,核心的函數就是一個render(),用于渲染出tab的樣式:
復制代碼 代碼如下:
$.fn.tabBox.render = function() {
$(".tabBox").css({
width : $.fn.tabBox.defaults.width+"px",
height : $.fn.tabBox.defaults.height+"px",
position : "relative",
border : "1px #ccc solid",
background : "url("+$.fn.tabBox.defaults.basePath+"tabHead.gif) top left repeat-x"
});
$(".tabBox h2").each(function(i){
$(this).css({
width : "80px",
height : "30px",
position : "absolute",
"border-top" : "none",
cursor : "pointer",
left : 10+(i*80),
background : "url("+$.fn.tabBox.defaults.basePath+"tabNormal.gif) top right no-repeat",
"text-align" : "center",
"font-size" : "12px",
"font-weight" : "normal",
color : "#06c",
"line-height" : "22px"
});
});
$(".tabBox div").each(function(){
$(this).css({
width : $.fn.tabBox.defaults.width+"px",
height : ($.fn.tabBox.defaults.height-30)+"px",
display : "none",
position : "absolute",
top : "30px"
});
});
$(".tabBox h2.curTab").css({
background : "url("+$.fn.tabBox.defaults.basePath+"tabCurTab.gif) top center no-repeat",
"font-weight" : "bolder"
});
$(".tabBox h2.curTab + div").css({
display : "block"
});
};

可以看到這個函數全都是設置樣式的代碼,(也讓我體驗了一下用jq設置css的快感,依然記得e.style.backgroud的時代~),這個函數保證了顯示當前被激活的標簽和對應的信息。另外,通過捕捉tab選項卡的click事件來改變當前的激活標簽,再渲染一次就可以了。
復制代碼 代碼如下:
$(".tabBox h2").click(function(){
$(".tabBox h2").removeClass("curTab");
$(this).addClass("curTab");
$.fn.tabBox.render();
});


寫完之后的一點思考:

1、對插件自定義選項的做法看不太懂
復制代碼 代碼如下:
// build main options before element iteration
var opts = $.extend({}, $.fn.tabBox.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;


這差不多是從Mike Alsup的文章中照搬過來的。照他的說法,好像是可以自定義整個插件的選項,還可以定義某一個特定元素的選項,可我試了一下,似乎不可以~。難道是我沒看懂他說的?

2、目前tab是捕捉click事件的,我想加強一下,可以自定義是捕捉click還是mouseover,是的,可以寫兩個事件處理函數。但怎么樣來通過配置決定調用哪個處理程序呢?
打包下載

JavaScript技術jQuery插件 tabBox實現代碼,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 99久久e免费热视频百度 | 青青视频国产色偷偷 | rio 快播| 国产午夜精品久久理论片小说 | 小s现场抛胸挤奶 | www.久久久 | 无遮挡午夜男女XX00动态 | 国产女合集第六部 | 69夫妇交友群 | 日本特殊精油按摩 | 亚洲日产2020乱码草莓毕 | 大地影院免费观看视频 | 国产在线观看免费观看 | 魔乳 堕乳漫画acg产卵 | A级毛片无码久久精品免费 a级毛片黄免费a级毛片 | 亚洲字幕在线观看 | 国产69精品麻豆久久久久 | 乌克兰粉嫩摘花第一次 | 国模沟沟一区二区三区 | 2019午夜75福利不卡片在线 | 九九99热久久999精品 | 亚洲一区综合图区 | 国产乱妇乱子在线播视频播放网站 | 99视频精品全部免费 在线 | 伊人久久99热这里只有精品 | 99久视频只有精品2019 | 善良的小峓子2在钱中文版女主角 | 亚洲国产系列一区二区三区 | 国产亚洲精品香蕉视频播放 | 日本高清不卡码无码v亚洲 日本福利片午夜免费观着 日本粉嫩学生毛绒绒 | 亚洲香蕉网久久综合影院 | 成人毛片18岁女人毛片免费看 | 5g在线视讯年龄确认海外禁止进入 | 亚洲娇小性色xxxx | 亚洲视频在线观看网站 | 国产色精品久久人妻99蜜桃麻豆 | 超碰高清熟女一区二区 | 99麻豆精品国产人妻无码 | 暖暖 视频 免费 高清 在线观看 | 福利视频一二三在线观看 | 99免费在线观看视频 |