Element.select - Prototype JavaScript 框架

Xunxin Prototype API

select
1.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 或以上的版本(在这些版本中优化了执行效率),上述两行代码运行时的速度差别可以忽略不计。