【发布时间】:2011-03-06 17:54:32
【问题描述】:
我想仅对 div“myDiv”中包含的“a”元素使用以下函数。
这是我目前一直在使用的代码:
$$('a[class="active"]').each(function(element) {
element.removeClassName("active");
});
【问题讨论】:
标签: class html prototypejs css-selectors
我想仅对 div“myDiv”中包含的“a”元素使用以下函数。
这是我目前一直在使用的代码:
$$('a[class="active"]').each(function(element) {
element.removeClassName("active");
});
【问题讨论】:
标签: class html prototypejs css-selectors
您可以通过两种方式做到这一点:
1) 查找myDiv,然后使用Element#select:
$('myDiv').select('a[class="active"]').each(...);
或
2) 使用带有 $$ 的后代选择器的 ID 选择器:
$$('#myDiv a[class="active"]).each(...);
如果您只想要 直接 个子代(而不是后代),您可以使用子选择器(注意 >):
$$('#myDiv > a[class="active"]).each(...);
题外话#1:在选择器中写a[class="active"] 的常用方法是a.active,例如“$('myDiv').select('a.active').each(...);”。
题外话 #2:您还可以查看 invoke 函数,该函数用于对 Enumerable 对象中的每个项目调用相同的函数(例如,“$('myDiv').select('a[class="active"]').invoke('removeClassName', 'active');”)。 invoke 很好,简短且富有表现力,但它比你自己做的要慢。 (不过,只有在涉及数千个元素时才重要。)
【讨论】: