select1.6
select(element, selector...) -> [HTMLElement...]
根据一个或多个指定的 CSS 选择器(字符串),在 element
中查找匹配其中任何一个选择器的后代节点,
返回数组,数组元素已经过 扩展。
该方法完全类似于 $$(),但只能用于一个元素的上下文中,而不是整篇文档。它们所支持的 CSS 语法完全相同,因此详细的描述请参考 $$()。
样例
<ul id="fruits">
<li id="apples">
<h3 title="yummy!">Apples</h3>
<ul id="list-of-apples">
<li id="golden-delicious" title="yummy!" >Golden Delicious</li>
<li id="mutsu" title="yummy!">Mutsu</li>
<li id="mcintosh">McIntosh</li>
<li id="ida-red">Ida Red</li>
</ul>
<p id="saying">An apple a day keeps the doctor away.</p>
</li>
</ul>
$('apples').select('[title="yummy!"]');
// -> [h3, li#golden-delicious, li#mutsu]
$('apples').select( 'p#saying', 'li[title="yummy!"]');
// -> [li#golden-delicious, li#mutsu, p#saying]
$('apples').select('[title="disgusting!"]');
// -> []
小提示
Element#select
可以作为 getElementsByTagName
的一个友好的替代版本:
var nodes = $A(someUL.getElementsByTagName('li')).map(Element.extend);
var nodes2 = someUL.select('li');
在第一行代码中,必须显式地转换结果集为 Array
(以便于 Prototype Enumerable
的方法使用),并且需要在每个节点上手动调用 Element.extend(以便于节点可以使用扩展的
DOM 方法)。Element#select
则不用担心这些问题。
如果你使用 1.6 或以上的版本(在这些版本中优化了执行效率),上述两行代码运行时的速度差别可以忽略不计。