Diciamo che ho $('mySelector:first');
e $('mySelector').first();
. Qual è il modo più efficiente? Ho cercato nella fonte, ma non riuscivo ancora a capirlo.jQuery cosa è più veloce: selettori o metodi?
Sembra che nel primo caso jQuery passa attraverso ogni elemento fino a quando ottiene la prima:
CHILD: function(elem, match) {
var type = match[1],
node = elem;
switch (type) {
...
case "first":
while ((node = node.previousSibling)) {
if (node.nodeType === 1) {
return false;
}
}
if (type === "first") {
return true;
}
node = elem;
...
}
}
Nel secondo caso jQuery fette la raccolta, ma non sono sicuro di come è efficiente:
function first() {
return this.eq(0);
};
function eq(i) {
return i === -1 ?
this.slice(i) :
this.slice(i, +i + 1);
};
La differenza di velocità è così minima che non avrà alcuna importanza. – Alex
@Phrogz che è davvero ossessivo. – Raynos
@Raynos Grazie (?) :) – Phrogz