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

时间:2011-09-27 16:08:26

标签: jquery

我正在尝试使用数组

设置锚点的子集

HTML& CSS:

<div>
    <a href="#1">one</a>
    <a href="#2">two</a>
    <a href="#3">three</a>
    <a href="#4">four</a>
    <a href="#5">five</a>
    <a href="#6">six</a>
    <a href="#7">seven</a>   
</div>

.hilight {
    background: #f00;
}

e.g。如何将“hilight”类添加到主播2,5和&amp; 6 ...

测试了这个:

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

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

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

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

4 个答案:

答案 0 :(得分:4)

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

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

这是一个修复:

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:2)

如果你没有它们的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总是至少有一个元素。

答案 3 :(得分:0)

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中添加的类是hilite。这可能是一个错字,但只是想让你知道。