国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript tab選項卡插件實例代碼

2019-11-20 10:32:14
字體:
來源:轉載
供稿:網友

今天,先從最簡單的開始,將已有的一個Tab選項卡切換功能改寫成javascript插件形式。

原生函數寫法

將一個javascript方法改寫為js插件最簡單的方式就是將這個方法掛載到window全局對象下面

我們先來看看最原始的使用函數寫法的代碼:

tab.html

<!DOCTYPE html><html><head lang="en"><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"><meta name="renderer" content="webkit"><title>jquery_hjb_tab插件demo</title><link rel="stylesheet" href="h.css"/></head><body><div id="tab"><div class="tabs"><ul><li><a href="#">tab1</a></li><li><a href="#">tab2</a></li><li><a href="#">tab3</a></li><li><a href="#">tab4</a></li></ul></div><div class="tabCons"><section>內容一</section><section>內容二</section><section>內容三</section><section>內容四</section></div></div><script>window.onload = h_tab('tab');function h_tab(tabId){var oLinks = document.getElementById(tabId).getElementsByTagName("a");var oCons = document.getElementById(tabId).getElementsByTagName("section");for(var i = 0; i<oLinks.length; i++){oLinks[i].index = i;oLinks[i].onclick = function () {for(var j =0; j<oLinks.length; j++){oLinks[j].className="";oCons[j].style.display = "none";}this.className="cur";oCons[this.index].style.display ="block";}}}</script>

h.css

@charset "utf-8";/*//author:hjb2722404//description://date:2016/2/18*/.tabs ul { width: 100%; list-style-type: none;}.tabs ul li { width: 48%; display: inline-block; margin: 0; padding: 0;}.tabs ul li a {border-bottom: 3px solid #cccccc; width: 100%; height: 100%; display: block; text-align: center; min-height: 40px; line-height: 40px; text-decoration: none; font-family: "微軟雅黑"; color: #a94442}.tabs ul li a.cur { border-bottom: 3px solid #f26123;}.tabCons section { display: none;}.tabCons section:nth-child(1) { display: block;}

上面兩份代碼為基本代碼,之后我們后一步步在這份代碼的基礎上進行改進。

原生插件寫法

好,現在,我們就來將這個方法改寫成掛載在window對象下的插件:

tab.html

……// 下面是第一次改動<script type="text/javascript" src="h_tabs.js"></script><script>H_tab("tab");</script></body></html>

h_tabs.js

window.H_tab = function(tabId){var oLinks = document.getElementById(tabId).getElementsByTagName("a");var oCons = document.getElementById(tabId).getElementsByTagName("section");for(var i = 0; i<oLinks.length; i++){oLinks[i].index = i;oLinks[i].onclick = function () {for(var j =0; j<oLinks.length; j++){oLinks[j].className="";oCons[j].style.display = "none";}this.className="cur";oCons[this.index].style.display ="block";}}};

但是,我們發現這樣的寫法雖然很簡單,但也有問題:window作為一個全局對象,如果我們把自己的方法都掛載到它下面作為插件使用的話,插件一多,就容易產生命名空間沖突,另一方面,使用原生js雖然可以減少對外部的依賴,但代碼量相對還是很大,寫法比較繁瑣。

jquery寫法

我們嘗試引入jquery庫,將此插件改寫為jquery插件。

jquery插件有三種形式:類級別的形式,對象級別的形式,jquery UI組件的形式

jquery 類級別插件寫法

主站蜘蛛池模板: 托克托县| 呼和浩特市| 山东| 元江| 中山市| 涟水县| 丁青县| 阆中市| 商洛市| 阿拉善盟| 阳信县| 瑞金市| 鸡泽县| 沙雅县| 措美县| 安顺市| 昭苏县| 玉屏| 康定县| 玛纳斯县| 赤峰市| 东丰县| 安阳市| 巨鹿县| 奇台县| 灵川县| 榆林市| 昌图县| 馆陶县| 鲁甸县| 贵南县| 吉木萨尔县| 论坛| 偃师市| 洱源县| 龙泉市| 乌鲁木齐县| 那曲县| 灵璧县| 兖州市| 都安|