Jquery $(“*”、$(“container1”和$(“container2”)之间有什么区别。查找(“*”)?
Jquery $(“*”、$(“container1”和$(“container2”)之间有什么区别。查找(“*”)?,jquery,Jquery,$(“*”、$(“#container1”)和$(“#container2”)之间有什么区别。查找(“*”?)?。 我通常使用AA,但不是很好,在这种情况下,可以更多的奇数 <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script> <script langu
$(“*”、$(“#container1”)
和$(“#container2”)之间有什么区别。查找(“*”
?)?。
我通常使用AA,但不是很好,在这种情况下,可以更多的奇数
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
<script language="JavaScript">
$(function(){
var endTime = 0, iniTime = 0, counter = 0;
iniTime = (new Date()).getTime();
$("*", $("#container1")).each(function()
{
counter++;
});
endTime = (new Date()).getTime();
$("#result").append("<div>Container enviroment -> "+counter+" "+(endTime-iniTime)+"</div>");
endTime = 0; iniTime = 0; counter = 0;
iniTime = (new Date()).getTime();
$("#container2").find("*").each(function()
{
counter++;
});
endTime = (new Date()).getTime();
$("#result").append("<div>Find method -> "+counter+" "+(endTime-iniTime)+"</div>");
});
</script>
</head>
<body>
<div id="result"></div>
<div id="container1">
<span></span>...
</div>
<div id="container2">
<span></span>...
</div>
</body>
</html>
Result:
IE8
Container enviroment -> 9752 282
Find method -> 9752 296
Chrome 4.0
Container enviroment -> 9752 65
Find method -> 9752 66
Firefox
Container enviroment -> 9752 135
Find method -> 9752 125
Safari
Container enviroment -> 9752 46
Find method -> 9752 51
$(函数(){
变量endTime=0,iniTime=0,计数器=0;
iniTime=(新日期()).getTime();
$(“*”,$(“#容器1”)。每个(函数()
{
计数器++;
});
endTime=(新日期()).getTime();
$(“#结果”).append(“容器环境->”+计数器+”+(endTime iniTime)+”);
endTime=0;iniTime=0;计数器=0;
iniTime=(新日期()).getTime();
$(“#container2”).find(“*”).each(function()
{
计数器++;
});
endTime=(新日期()).getTime();
$(“#result”).append(“Find method->”+counter++(endTime iniTime)+”);
});
...
...
结果:
IE8
集装箱环境->9752 282
查找方法->9752 296
铬4.0
集装箱环境->9752 65
查找方法->9752 66
火狐
集装箱环境->9752 135
查找方法->9752 125
游猎
集装箱环境->9752 46
查找方法->9752 51
正确使用时,上下文选择器与查找没有区别。Resig表示他不喜欢上下文选择器,更喜欢人们使用.find(),因为它在语义上更有意义
有很多方法可以破坏上下文;例如,传递字符串无效,并导致选择器默认解析整个文档。我相当肯定您的示例正确地使用了上下文(没有时间进行测试),但再次强调,使用.find()克服了这种不确定性。我认为上下文选择器必须隐式调用find()本身 为了简单起见,最好只使用find() 编辑:1.3.2中的源代码:
// HANDLE: $(expr, [context])
// (which is just equivalent to: $(content).find(expr)
但是您不认为给它一个起始上下文可以防止它扫描整个DOM,从而使选择器的性能更好吗?根据页面的不同,这可能会对性能产生重大影响。我确实注意到他的测试,但由于标记结构不切实际,我不确定这些测试是否相关。+1完全同意。如果这有助于OP,这里有一篇关于上下文的不错的博文:@Josh Stodola-调用find的初始选择器可以被认为是起始上下文-我认为它仍然是一样的。如果我说
$('div.blah').find('.foo')
,这不会扫描整个DOM中的.foo
。