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。
在布兰登的网站进一步的解释是在这里 。
这两个电话是相同的。 后者的电话被翻译成前者。 如果您想省略翻译步骤,请使用前一个。
我可以考虑一个使用context
forms的用例,如果上下文包含在一个可能为空的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>上下文。