将数组元素连接到jQuery选择器中

将数组元素连接到jQuery选择器中,jquery,Jquery,我想循环一个数组,以便使用jQuery将CSS添加到菜单链接中。如果某个字符串出现在URL中,则会将某个CSS分配给包含相同字符串的菜单链接 下面是HTML(不确定它是否真的有帮助,但这里有): 以下是我的代码片段: var url_link = new Array(); url_link[0] = 'about'; url_link[1] = 'the-company'; url_link[2] = 'employment'; url_link[3] = 'customer-ser

我想循环一个数组,以便使用jQuery将CSS添加到菜单链接中。如果某个字符串出现在URL中,则会将某个CSS分配给包含相同字符串的菜单链接

下面是HTML(不确定它是否真的有帮助,但这里有):

以下是我的代码片段:

var url_link = new Array();

url_link[0] = 'about';
url_link[1] = 'the-company';
url_link[2] = 'employment';
url_link[3] = 'customer-service';
url_link[4] = 'faqs';
url_link[5] = 'brands';
url_link[6] = 'news';
url_link[7] = 'videos';
url_link[8] = 'contact';

for (var i=0; i<url_link.length; i++) {
    if (location.href.indexOf(url_link[i])>=0) {
        $('.appearance-menus-'+url_link[i]+'>a').css("color", "#636363");
        $('.appearance-menus-'+url_link[i]+'>a').mouseout(function() {
            $(this).css("color", "#636363");
        });
    }
}
var url_link=new Array();
url_链接[0]=“关于”;
url_link[1]=“公司”;
url_link[2]=“就业”;
url_link[3]=“客户服务”;
url_link[4]=“常见问题解答”;
url_link[5]=“品牌”;
url_link[6]=“新闻”;
url_link[7]=“视频”;
url_link[8]=“联系人”;
对于(变量i=0;i=0){
$('.appearance menu-'+url_link[i]+'>a').css(“color”,“636363”);
$('.appearance menu-'+url_link[i]+'>a').mouseout(函数(){
$(this.css(“color”,“#6363”);
});
}
}
出于某种原因,这个片段破坏了网站,我怀疑这是将数组元素连接到jQuery选择器中的问题。我一定把语法弄乱了


正确的方法是什么

因为
indexOf
不是一个跨浏览器功能,所以您应该使用一个替代方法(例如使用)或自己实现它:

您编写的代码没有什么特别的错误,应该可以将内联样式添加到所选链接中

您正在生成的选择器如下所示:

'.appearance-menus-about > a'
'.appearance-menus-the-company > a'
'.appearance-menus-employment > a'
'.appearance-menus-customer-service > a'
'.appearance-menus-faqs > a'
'.appearance-menus-brands > a'
'.appearance-menus-news > a'
'.appearance-menus-videos > a'
'.appearance-menus-contact > a'
您可能需要确保这些信息存在于您的文档中

最后,我稍微自由地写了一个更有效的版本:

var url_links = [
        'about',
        'the-company',
        'employment',
        'customer-service',
        'faqs',
        'brands',
        'news',
        'videos',
        'contact'
    ],
    links = url_links.filter(function (val, index, arr) {
        return location.href.toLowerCase().indexOf(val.toLowerCase()) > -1;
    }),
    link = '';
for (i = 0; i < links.length; i += 1) {
    link = links[i];
    selector = '.appearance-menus-' + link + ' > a';
    console.log(selector);
    $(selector).mouseout(function() {
        $(this).css('color', '#636363');
    }).trigger('mouseout');
}
var url\u链接=[
“关于”,
“公司”,
"就业",,
‘客户服务’,
“常见问题”,
“品牌”,
"新闻",,
“视频”,
“联系人”
],
links=url\u links.filter(函数(val、index、arr){
返回location.href.toLowerCase().indexOf(val.toLowerCase())>-1;
}),
链接='';
对于(i=0;ia';
控制台日志(选择器);
$(选择器).mouseout(函数(){
$(this.css('color','#636363');
}).触发器(“鼠标出”);
}

解决这个问题真正有帮助的是HTML。我们可以看到吗?这是一个非常糟糕的方法,可以为你的链接设置一个简单的活动类。一切都应该是好的,我不确定,但是试着给你的jQuery选择器添加空格
$('.外观菜单-'+url\u link[I]+'>a')
修复这个问题并不难,但是如果我可以问的话,为什么不直接使用css呢?例如,这个菜单系统不是有一个带有类名或id的父div吗?所以你可以做如下的事情:
#父li a,#父li a:悬停,#父li a:活动{color:#63636363;}
嘿@SpYk3HH–好久没听到了因为还涉及到AJAX,说来话长,它去除了所有类型的CSS规则,与类相关,这些类为不喜欢浏览器中JS的人提供所需的CSS行为。但是,您如何解决这个问题?但是
location.href
是一个字符串,唯一不支持
string.indexOf
的浏览器是NetScape 1.0或其他什么?有些IE不支持it@SpYk3HH-没错,是的,所以IE5或更低版本不支持它@adeneo:
String.indexOf
在浏览器中运行良好
Array.indexOf
是@sdespont在回答中所指的。@pete-我明白了,但
location.href
不是数组,这是一个字符串,在字符串上对
indexOf
的支持不是问题,除非您需要支持IE5。
var url_links = [
        'about',
        'the-company',
        'employment',
        'customer-service',
        'faqs',
        'brands',
        'news',
        'videos',
        'contact'
    ],
    links = url_links.filter(function (val, index, arr) {
        return location.href.toLowerCase().indexOf(val.toLowerCase()) > -1;
    }),
    link = '';
for (i = 0; i < links.length; i += 1) {
    link = links[i];
    selector = '.appearance-menus-' + link + ' > a';
    console.log(selector);
    $(selector).mouseout(function() {
        $(this).css('color', '#636363');
    }).trigger('mouseout');
}