首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery重构

jQuery重构
EN

Stack Overflow用户
提问于 2012-11-26 21:41:45
回答 3查看 372关注 0票数 0

我经常花10-20分钟查看jQuery片段,以找到一种缩短代码的方法。

现在这段代码我已经看了一遍又一遍,但我只是想知道人们会如何重构它,或者他们是否真的会这样做。

代码语言:javascript
复制
$("#tabs ul li").first().addClass("activeTab");
$("#tabs div").hide().first().show();
$("#tabs ul li a").click(function(){
    $("#tabs div").hide();
    $("#tabs").find($(this).attr('href')).show();
});

这更多的是一个好奇心的问题,而不是求救,因为我正在努力提高我的jQuery编程技能。

/*编辑

连接链路的jsFiddle

你所有精彩建议的最终结果是。

代码语言:javascript
复制
var $c = $("#tabs"), $t = $c.find("li"), $d = $c.find("div");
$d.not(":first").hide();
$t.find("a").click(function() {
    $d.hide().filter($(this).attr('href')).show();
}).closest("li").first().addClass("activeTab");
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-26 21:51:04

我将按如下方式重构它。不需要每次都创建jQuery对象,对它进行引用以备将来使用。

代码语言:javascript
复制
    var $tabs = $("#tabs");

    $tabs.find("li:first").addClass("activeTab");
    $tabs.find('div').not(':first').hide();
    $tabs.find("a").click(function() {
        $("#tabs div").hide().filter($(this).attr('href')).show();
    })
票数 4
EN

Stack Overflow用户

发布于 2012-11-26 21:53:09

我会重构选择器,因此遍历Dom的成本会更低。它应该是这样的:

代码语言:javascript
复制
var $tabsControl = $("#tabs"),
    $tabs = $tabsControl.find("ul > li"),
    $tabsContent = $tabsControl.find("div");

$tabs.first().addClass("activeTab");
$tabsContent.hide().first().show();
$tabs.find("a").click(function() {
    $tabsContent.hide();
    $tabsControl.find($(this).attr("href")).show();
});
票数 2
EN

Stack Overflow用户

发布于 2012-11-26 21:50:34

我个人认为这段代码还可以,但重构$("#tabs div").hide().first().show();只是为了使它更具可读性,也许是:

代码语言:javascript
复制
$("#tabs div").not(":first").hide();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13566061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档