Cra*_*g M 5 performance jquery
我想知道在使用jQuery进行选择时使用context参数与使用普通的CSS范围选择器相比是否有任何优势.
假设我有这个HTML:
<div class="contacts">
<h1>All contacts</h1>
<div class="contact new">
<p class="name">Jim Jones</p>
<p class="phone">(555) 555-1212</p>
</div>
<div class="contact new">
<p class="name">Bob Smith</p>
<p class="phone">(555) 555-1213</p>
</div>
<div class="contact new">
<p class="name">Dave Baker</p>
<p class="phone">(555) 555-1214</p>
</div>
<div class="contact">
<p class="name">Pete Harrison</p>
<p class="phone">(555) 555-1215</p>
</div>
<div class="contact">
<p class="name">George Donald</p>
<p class="phone">(555) 555-1216</p>
</div>
<div class="contact">
<p class="name">Chris Root</p>
<p class="phone">(555) 555-1217</p>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
如果我想从联系人div中获取所有新联系人(标记为'new'类),哪种方法更快,更好地扩展等等.?
$('.contacts .new');
Run Code Online (Sandbox Code Playgroud)
要么
$('.new', '.contacts');
Run Code Online (Sandbox Code Playgroud)
更新
在答案和评论中散布着很多很棒的信息.总结一下主要观点,在大多数浏览器中,当存在多个.contacts div时,单个选择器会更好地扩展.在大多数浏览器中,两个选择器上下文方法更快,只有一个.contacts div存在.
从中获取的有用之处是我们可以在选择具有id的元素内部时使用一种方法.
$('p:first', '#chapter2'); // get the first paragraph from chapter 2
Run Code Online (Sandbox Code Playgroud)
并将单选择器方法用于我们从可能较大的元素组中进行选择的实例.
$('.chapter p:first-child'); // get the first paragraph from all chapters
Run Code Online (Sandbox Code Playgroud)