像这样的选择器'#theId'
不会让 jQuery 扫描文档,因为它使用document.getElementById
.
如果您想查找知道其 id 的元素,即使您知道其父元素,也请始终使用$('#theid')
.
事实上,如果你提供父元素作为上下文,jQuery 将调用document.getElementById
并检查父元素是否包含找到的元素。因此,这要慢得多。
从源代码:
// Speed-up: Sizzle("#ID")
if ( (m = match[1]) ) {
if ( nodeType === 9 ) {
elem = context.getElementById( m );
// Check parentNode to catch when Blackberry 4.6 returns
// nodes that are no longer in the document #6963
if ( elem && elem.parentNode ) {
// Handle the case where IE, Opera, and Webkit return items
// by name instead of ID
if ( elem.id === m ) {
results.push( elem );
return results;
}
} else {
return results;
}
} else {
// Context is not a document
if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
contains( context, elem ) && elem.id === m ) {
results.push( elem );
return results;
}
}
同样,如果要选择具有类的所有元素,请不要指定父级,这无济于事。
在您的情况下,由于您似乎想使用父级来限制集合,只需使用
$(".valueElement", "#parent");