javascript - 合并这两个 if...else 语句

标签 javascript jquery

抱歉,我是 jQuery 新手。所以我有这个带有两个 if else 语句的 jQuery 代码,我想将其合并,因为我觉得这是不必要的重复。它们是有些不同的代码,因为一个作用于 ul#tabs li a,另一个作用于 ul.tabs li a。如何合并它们以提高性能?这是代码:

$(document).ready(function() 
{
    var hash = location.hash;

    $(".tab_content").hide(); //Hide all content

    if ($("ul#tabs li a[href='" + hash + "']").length) 
    { 
        $("ul#tabs li a[href='" + hash + "']")
            .addClass("active")
            .parent()
            .addClass("active"); //Activate tab

        $(hash).show();
    }
    else 
    {
        do stuff
    }  

    if ($("ul.tabs li a[href='" + hash + "']").length) 
    {
        $("ul.tabs li a[href='" + hash + "']")
            .addClass("active")
            .parent()
            .addClass("active"); //Activate tab

        $(hash).show();
    }
    else 
    {
        do stuff
    }  
}); 

如何合并这两个代码?

最佳答案

逗号运算符 , 在 CSS 和 jQuery 中用于指定多个选择器:

    var sel = $("ul.tabs li a[href='" + hash + "'], ul#tabs li a[href='" + hash + "']");
    if (sel.length) { 
        sel.addClass("active").parent().addClass("active"); //Activate tab
        $(hash).show();
    }
    else {
        do stuff
    }

您可以进一步减少重复:

var sel = $("ul.tabs, ul#tabs").find("li a[href='" + hash + "']");
....

关于javascript - 合并这两个 if...else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15736826/

相关文章:

javascript - div 的颜色变化太快

javascript - 有条件地绑定(bind)组件状态

javascript - 尝试向 CSS 样式表添加规则在 Firefox 中给出 "The operation is insecure"

Javascript 新闻滚动条

jquery - jquery property .css( propertyName ) 是否没有违反关注点分离规则?

javascript - 清理 jquery 字符串?

javascript - 在 WebStorm 上期待换行符或分号错误

php - Ajax 调用有效;不再工作

javascript - 第二次出现复选框

javascript - 通过选择选项禁用文本框