【问题标题】:Trigger toggle if URL is in array如果 URL 在数组中,则触发切换
【发布时间】:2011-03-20 22:56:45
【问题描述】:

我有一个包含多个 jQuery 切换的菜单,如果页面 URL 匹配,我希望 jQuery 切换打开一个。我猜我需要一个数组来保持代码简短,但我知道我做错了什么。

$(function() {
    var pathname = window.location.pathname;
var myWhoweare = new Array("history.asp","corporate_profile.asp");

if(jQuery.inArray(pathname, myWhoweare) !== -1) {
      $('div.accordian_whoweare> div').show();
    }
});

我很确定我的错误在于数组的创建方式(其中有两个用于此测试的 URL,稍后会有更多)和检测到。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript jquery arrays toggle


    【解决方案1】:

    location.pathname 有一个正斜杠作为第一个字符。将其添加到数组中的 URL(并使用数组文字表示法):

    $(function() {
        var pathname = window.location.pathname;
        var myWhoweare = ["/history.asp","/corporate_profile.asp"];
    
        if($.inArray(pathname, myWhoweare) !== -1) {
            $('div.accordian_whoweare> div').show();
        }
    });
    

    如果您要添加更多 URL,更有效的方法是使用由 JavaScript 对象实现的映射(或哈希表,但您想调用它):

    $(function() {
        var pathname = window.location.pathname;
        var myWhoweare = {
            "/history.asp": true,
            "/corporate_profile.asp": true
        };
    
        if(myWhoweare[pathname]) {
            $('div.accordian_whoweare> div').show();
        }
    });
    

    测试 URL 是否包含在地图中将是 O(1)(而在数组中查找值的运行时间显然会更长)。

    【讨论】:

    • 非常感谢,成功了!我知道我错过了什么。
    • 您也可以放弃领先的/,并在pathname 上执行substring(1)。 +1,因为我认为这是一个很好的答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多