Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery $(“*”、$(“container1”和$(“container2”)之间有什么区别。查找(“*”)?_Jquery - Fatal编程技术网

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