使用$ .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
。 这可能是一个错字,但只是想让你知道。