更快
<div class="box"><div id="inside"></div></div>
jquery
var div_obox = $('.box');
var div_Ibox = div_obox.find("#inside") or var div_Ibox = $("#inside");
只是急于知道哪个更快我知道使用ID是最快的,但是即使使用变量也要快得多。
我期待它,因为它已在第一个语句中找到.box
元素,因此浏览器可以使用#inside
函数轻松找到find
元素。正如我们指定的那样,它存在于.box
内,如果我在这里使用id
,我想它需要从头再次开始搜索过程。让我通过find函数知道Id与var。谢谢
答案 0 :(得分:1)
$("#inside")
比div_obox.find("#inside")
快于$('.box > #inside')
,因为在第一种情况下,jQuery可以并且确实使用document.getElementById
,并且所有浏览器都在id之间保持直接映射和相关的元素。
来自源代码:
// Shortcuts
if ( (match = rquickExpr.exec( selector )) ) {
// Speed-up: Sizzle("#ID")
if ( (m = match[1]) ) {
if ( nodeType === 9 ) {
elem = context.getElementById( m );
如果没有逻辑原因(即检查DOM中特定部分中存在的元素),切勿向'#id'
选择器添加任何内容。
答案 1 :(得分:1)
我会跑一些测试......
但我相信所有元素都是通过网页上的ID来编制索引,因此$('#inside')
或$('.box > #inside')
会比$('.box').find('#inside')
快得多
答案 2 :(得分:1)
我相信直接 ID 即$("#inside")
将永远是最快,因为DOM
上的所有内容都以唯一ID为索引。