En los navegadores modernos, jQuery utiliza document.querySelectorAll()
para aumentar el rendimiento cuando se usan selectores CSS válidos. Se recurre a Sizzle si un navegador no admite el selector o el método document.querySelectorAll()
.¿Puedo forzar a jQuery a utilizar Sizzle para evaluar un selector sin usar selectores no estándar?
Sin embargo, siempre me gustaría utilizar Sizzle en lugar de la implementación nativa al depurar un selector personalizado. A saber, estoy tratando de llegar a una implementación de :nth-last-child()
, one of the CSS3 selectors that are not supported by jQuery. Dado que este selector es compatible de forma nativa con los navegadores modernos, funciona como se describe en la pregunta vinculada. Sin embargo, es precisamente este comportamiento el que interfiere con la depuración de mi selector personalizado, así que me gustaría evitarlo.
Un truco barato que puedo usar es introducir un jQuery selector extension no estándar, lo que "invalida" el selector por así decirlo. Por ejemplo, suponiendo que todos los li:nth-last-child(2)
es visible, puedo caer simplemente en que, convirtiendo esto:
$('li:nth-last-child(2)').css('color', 'red');
En esto:
$('li:nth-last-child(2):visible').css('color', 'red');
Esto hace que sea evaluada siempre por chisporroteo. Excepto, esto requiere que haga una suposición de mis elementos de página que pueden o no ser cierta. Y realmente no me gusta eso. Sin mencionar, no me gusta usar selectores no estándar en general a menos que sea absolutamente necesario.
¿Hay una manera de saltarse el document.querySelectorAll()
método nativo en los navegadores que lo soportan y la fuerza jQuery para usar chisporroteo para evaluar un selector de cambio, que preferentemente no emplean el uso de selectores no estándar? Probablemente, esto implica llamar a otro método en lugar de $()
, pero es mucho mejor que un selector de hackeo de IMO.
Si se trata de depurar, podría tratar de sobrescribir o eliminar la función document.querySelectorAll() tal vez. – jholloman
+1 por intentar esto. Awesome :) – Spudley
No lo intenté: https://github.com/cowboy/jquery-misc/blob/master/jquery.ba-nth-last-child.js – thirtydot