jQuery查找与上下文select

有以下的HTML片段

<div class="something"> <p>Some text</p> </div> <div class="somethingElse"> <p>some other text</p> </div> 

我认为下面的jquery片段是相同的(将有相同的结果):

 $(".something").find("p").css("border", "1px solid red"); $("p", ".something").css("border", "1px solid red"); 

我的问题是,一个片段是否比另一个片段好,应该使用

来电不一样。

根据显然在jQuery上工作的Brandon Aaron,并且根据现场testing,find方法总是更快。 在下面的截图中查看结果。 请评论,如果我失去了一些东西。

在速度上有10%或更大的差异,取决于浏览器,绝对看起来值得使用find。

在布兰登的网站进一步的解释是在这里 。

jQuery上下文和jQuery查找方法之间的性能比较结果

这两个电话是相同的。 后者的电话被翻译成前者。 如果您想省略翻译步骤,请使用前一个。

我可以考虑一个使用contextforms的用例,如果上下文包含在一个可能为空的variables中。

例如:

 // Only affect matching items that are descendants of '#parent' do_something( $( '#parent' ) ); // Affect all matching items do_something(); function do_something( $parent_element ){ $( '.child', $parent_element ).each( function(){ } ); } 

第二次调用do_something() ,如果我们使用了$parent_element.find()那么它将失败,而在本例中,如果$parent_element未定义或为空,则上下文为空,即:整个文档。

无可否认,这是一个边缘案例,但它只是出现在我正在做的事情上,所以我想我会把它放在这里作为后代。

发现更好,40%:

http://jsperf.com/jquery-find-vs-context-2/13

注意不同之处:

 $myDiv = $("myDiv") myDiv = "#myDiv" 

当传递$myDiv ,jQuery元素作为上下文,比$ .find慢10%左右。 当传递#myDiv ,jQueryselect器作为上下文,比$ .find慢40%。

$ .find>上下文。