【jquery中tabs选项卡】jQuery中tabs选项卡工作日志

更新时间:2019-01-04    来源:jquery    手机版     字体:

【www.bbyears.com--jquery】

已经不记得是多久没有写过了,最近的状态还不错,因为各种考试的缘故,很多技术文章都是看了,没有往上面写。在亚马逊购了一些H5,CSS3以及移动互联网开发的书,等驾照考过之后就又要开启学习模式了。

今天闲来无聊,也就把jQuery里面的几个点复习了一边,写了一个小DEMO。复习点是jQuery的自定义事件。

直接帖代码上来了。

 代码如下

jQuery.fn.tabs = function (control) {
    var element = $(this);
    control = $(control);
    //初始化完毕

    element.delegate("li", "click", function () {
        //找到需要修改的目标
        var tabName = $(this).attr("data-tab");
        //点击选项卡触发自定义事件
        element.trigger("change.tabs", tabName);
    });

    element.bind("change.tabs", function (e, tabname) {
        element.find("li").removeClass("active");
        element.find(">[data-tab="" + tabname + ""]").addClass("active");
    });

    element.bind("change.tabs", function (e, tabname) {
        control.find(">[data-tab]").removeClass("active");
        control.find(">[data-tab="" + tabname + ""]").addClass("active");
    });

    var firstName = element.find("li:first").attr("data-tab");
    element.trigger("change.tabs",firstName);

    return this;
}

自定义事件在日常的WEB开发中是非常常见的功能,用于封装自有组件定义自有API。实在是居家旅行,开发面试必备技能。

我们也可以不需要这个 jQuery 的 tab(选项卡) 插件,它们多数功能齐全,并且可自定义参数。但除非我去看它们的源代码,否则用起来总像个黑盒子,一旦出问题,调试也觉得麻烦,所以就干脆自己试手,写一个简单适用自己项目的选项卡插件。

 代码如下

代码
/*===================================
    Module Name: tabview
     ==================================*/

(function ($) {
    function processing(e) {
    var li = $(this);
    li.siblings(".tab-item").removeClass("on");
    li.siblings(".tab-item").children("a").removeClass("selected");
    li.addClass("on");
    li.children("a").addClass("selected");
    var currentTab = li.children("a").attr("data-target");
    li.closest(".js-tabview").find("div[id]").addClass("is-hide"); //加id是防止误伤其他 div
    $(currentTab).removeClass("is-hide");
    e.preventDefault();
    }
    $.fn.tabview = function (options) {
    var settings = $.extend({
        trigger: "hover"
    }, options);
    return this.each(function () {
        var el = $(this).find(".tab").children(".tab-item").filter(function () {
            return !!$(this).children("a").attr("data-target");
        });
        if (settings.trigger === "hover") {
            el.hover(processing);
        }
        if (settings.trigger === "click") {
            el.click(processing);
        }
    });

    };
}(jQuery));

HTML代码结构如下:

 代码如下
   

           
  • 选项卡一
           
  • 选项卡二
           
  • 选项卡三
       
        选项卡一对应的内容块
        选项卡二对应的内容块
        选项卡三对应的内容块

    CSS 如下:

     代码如下 .is-hide{display:none;}

    之所以添加 .is-hide,是为了防止 fouc(flash of unstyled content),本来 js 中即可完成隐藏元素的结果。

    在页面中引入 jquery 与 tabview 插件后,JavaScript 部分书写如下:

     代码如下

    $(function(){$(".js-tabview").tabview();});

    本文来源:http://www.bbyears.com/wangyezhizuo/47029.html