<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>JQ选项卡</title> <style> #div1 div, #div2 div, #div3 div, #div4 div { width: 200px; height: 200px; border: 1px #000 solid; display: none; } .active { background: red; } </style> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> </head> <body> <div id="div1"> <input class="active" type="button" value="1"> <input type="button" value="2"> <input type="button" value="3"> <div style="display:block">111111</div> <div>222222</div> <div>333333</div> </div> <div id="div2"> <input class="active" type="button" value="1"> <input type="button" value="2"> <input type="button" value="3"> <div style="display:block">111111</div> <div>222222</div> <div>333333</div> </div> <div id="div3"> <input class="active" type="button" value="1"> <input type="button" value="2"> <input type="button" value="3"> <div style="display:block">111111</div> <div>222222</div> <div>333333</div> </div> <div id="div4"> <input class="active" type="button" value="1"> <input type="button" value="2"> <input type="button" value="3"> <div style="display:block">111111</div> <div>222222</div> <div>333333</div> </div> <input type="button" value="点击" id="input1"> </body> <script type="text/javascript"> /** title : 基于JQ的选项卡组件 Options : event delay Methods : nowSel() getContent() Events : beforeClick afterClick **/ //jQ中的主动触发 : trigger() $(function() { var t1 = new Tab(); t1.init(‘div1‘); var t2 = new Tab(); t2.init(‘div2‘, { event: ‘mouseover‘ }); var t3 = new Tab(); t3.init(‘div3‘, { event: ‘mouseover‘, delay: 200 }); var t4 = new Tab(); t4.init(‘div4‘); t4.nowSel(2); $(‘#input1‘).click(function() { alert(t4.getContent()); }); $(t4).on(‘beforeClick‘, function() { alert(t4.getContent()); }); $(t4).on(‘afterClick‘, function() { alert(t4.getContent()); }); }); function Tab() { this.oParent = null; this.oInput = null; this.oDiv = null; this.isNow = 0; this.settings = { //默认参数 event: "click", delay: 0 }; }; Tab.prototype.init = function(oParent, opt) { $.extend(true, this.settings, opt); this.oParent = $("#" + oParent); this.aInput = this.oParent.find("input"); this.aDiv = this.oParent.find("div"); this.change(); }; Tab.prototype.change = function() { var This = this; var time = null; this.aInput.on(this.settings.event, function() { var _this = this; if(This.settings.event == "mouseover" && This.settings.delay) { time = setTimeout(function() { show(_this); }, This.settings.delay); } else { show(_this); } }).mouseout(function() { clearTimeout(time); }); function show(obj) { $(This).trigger("beforeClick"); This.aInput.attr("class", ""); This.aDiv.css("display", "none"); $(obj).attr("class", "active"); This.aDiv.eq($(obj).index()).css("display", "block"); This.iNow = $(obj).index(); $(This).trigger("afterClick"); }; }; Tab.prototype.nowSel = function(index) { this.aInput.attr(‘class‘, ‘‘); this.aDiv.css(‘display‘, ‘none‘); this.aInput.eq(index).attr(‘class‘, ‘active‘); this.aDiv.eq(index).css(‘display‘, ‘block‘); this.iNow = index; }; Tab.prototype.getContent = function() { return this.aDiv.eq(this.iNow).html(); }; </script> </html>