100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > [js高手之路]jquery插件开发实战-选项卡详解

[js高手之路]jquery插件开发实战-选项卡详解

时间:2024-08-06 18:21:53

相关推荐

[js高手之路]jquery插件开发实战-选项卡详解

在jquery中,插件开发常见的有:

一种是为$函数本身扩展一个方法,这种是静态扩展(也叫类扩展),这种插件一般是工具方法,

还有一种是扩展在原型对象$.fn上面的,开发出来的插件是用在dom元素上面的

一、类级别的扩展

1 $.showMsg = function(){2 alert('hello,welcome to study jquery plugin dev');3 }4 // $.showMsg();

注意要提前引入jquery库, 上例在$函数上面添加了一个方法showMsg,那么就可以用$.showMsg()调用了

1$.showName = function(){2 console.log( 'ghostwu' );3 }4 $.showName();

这种插件比较少见,一般都是用来开发工具方法,如jquery中的$.trim, $.isArray()等等

二、把功能扩展在$.fn上,

这种插件就是用在元素上,比如,我扩展一个功能,点击按钮,显示当前按钮的值

$.fn.showValue = function(){return $(this).val();}$(function(){$("input").click(function(){// alert($(this).showMsg());alert($(this).showMsg());});});<input type="button" value="点我">

在$.fn上添加一个showValue方法, 返回当前元素的value值. 在获取到页面input元素,绑定事件之后,就可以调用这个方法,显示按钮的值 "点我",在实际插件开发中,常用的就是这种.接下来,我们就用这种扩展机制开发一个简单的选项卡插件:

页面布局与样式:

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4<meta charset="UTF-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1.0"> 6<meta http-equiv="X-UA-Compatible" content="ie=edge"> 7<title>Document</title> 8<script src="/jquery/1.12.0/jquery.js"></script> 9<style>10 #tab {11 width:400px;12 height:30px;13 }14 #tab li, #tab ul {15 list-style-type:none;16 }17 #tab ul {18 width:400px;19 height: 30px;20 border-bottom:1px solid #ccc;21 line-height: 30px;22 }23 #tab ul li {24 float:left;25 margin-left: 20px;26 padding:0px 10px;27 }28 #tab ul li.active {29 background: yellow;30 }31 #tab ul li a {32 text-decoration: none;33 color:#666;34 }35 #tab div {36 width:400px;37 height:350px;38 background-color:#ccc;39 }40 .clearfix:after{41 content: '';42 display: block;43 clear: both;44 height: 0;45 visibility: hidden;46 }47</style>48<script src="tab2.js"></script>49<script>50 $(function(){51 $("#tab").tabs( { evType : 'mouseover' } );52 });53</script>54 </head>55 <body>56<div id="tab">57 <ul class="clearfix">58 <li><a href="#tab1">选项1</a></li>59 <li><a href="#tab2">选项2</a></li>60 <li><a href="#tab3">选项3</a></li>61 </ul>62 <div id="tab1">作者:ghostwu(1)63 <div>博客: /ghostwu/</div>64 </div>65 <div id="tab2">作者:ghostwu(2)66 <div>博客: /ghostwu/</div>67 </div>68 <div id="tab3">作者:ghostwu(3)69 <div>博客: /ghostwu/</div>70 </div>71</div>72 </body>73 </html>

tab2.js文件

1 ;(function ($) { 2$.fn.tabs = function (opt) { 3 var def = { evType: "click" }; //定义了一个默认配置 4 var opts = $.extend({}, def, opt); 5 var obj = $(this); 6 7 $("ul li:first", obj).addClass("active"); 8 obj.children("div").hide(); 9 obj.children("div").eq(0).show();10 11 $("ul li", obj).bind(opts.evType, function () {12 $(this).attr("class", "active").siblings("li").attr("class","");13 var id = $(this).find("a").attr("href").substring(1);14 obj.children("div").hide();15 $("#" id, obj).show();16 });17};18 })(jQuery);

1,一个自执行函数,把插件封装成模块,把jQuery对象传给形参$

2,第3行,定义一个默认配置,选项卡的触发类型,默认为点击事件

3,第4行,如果opt传参,就用opt的配置,否者就用第3行的默认配置,这行的作用就是为了在不改变插件源码的情况下,可以配置插件的表现形式

4,第7-9行,让选项卡第一个div显示,其余的都隐藏,让第一个tab加上class='active' 黄色高亮选中

5,第11-16行,点击对应的选项卡,让对应的div显示与隐藏

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。