使用$ .each将addClass添加到元素中

我正在尝试使用数组设置锚点的子集

HTML和CSS:

 .hilight { background: #f00; } 

例如,我如何将类“hilight”添加到锚点2,5和6 ……

测试了这个:

 $("a[href='#5']").addClass('hilite'); 

我用$ .each()尝试了以下操作,但这不起作用。 我想我正在迭代每个锚3次,但我没想到没有输出!

 var arr = ["#2", "#5", "#6"]; $.each(arr, function(index, value) { $("a[href=value]").addClass('hilite');' }); 

有人能指出我正确的方向请:)

你根本不需要每个,你可以使用逗号分隔的所有选择器。

 $("a[href='#2'], a[href='#5'], a[href='#6']").addClass('hilite'); 

您的代码不起作用,因为$("a[href=value]")不存在。

你想使用$("a[href='"+value+"']") ,其中value将被变量值的值“替换”。

这是一个修复:

 var arr = ["#2", "#5", "#6"]; $.each(arr, function(index, value) { $("a[href='"+value+"']").addClass('hilite'); }); 

如果你没有它们的TON,它可能更简单…

 $("a[href='#2'], a[href='#5'], a[href='#6']").addClass('hilite'); 

做同样的事情,但更动态(约翰)……

 var arr = ["#2", "#5", "#6"]; $("a[href='"+arr.join("'], a[href='")+"']").addClass('hilite'); 

这假设arr总是至少有一个元素。

jQuery addClass()方法能够创建一个函数来确定要添加的类。 您可以使用它来确定元素是否是需要添加类的元素。 这比为数组中的每个值运行选择器$("a[href='"+value+"']") ,因为它只会遍历DOM一次而不是n(数组的大小)次。

 var arr = ["#2", "#5", "#6"]; $("a").addClass(function () { if (arr.indexOf($(this).attr("href")) != -1) { return "hilight"; } }); 

这是一个演示http://jsfiddle.net/VqLnt/3/

我还想注意你的CSS类名为hilight但是你试图在JavaScript中添加的类是hilight 。 这可能是一个错字,但只是想让你知道。