selectores name examples ejemplos avanzados javascript jquery jquery-selectors

javascript - name - selectores jquery avanzados



jQuery selector reutilizar las mejores prácticas (2)

La segunda opción es completamente válida y una buena práctica, sin embargo, la primera no tiene sentido. Está intentando jQueryify un objeto que ya ha sido jQueryified. Básicamente es algo así como $($("body")) .

También tenga en cuenta que es una buena práctica anteponer $ a las variables que contienen el objeto jQuery. Tu código debería verse así:

var $myElement2 = $(".container").find(''ul li:eq(2)''); $myElement2.css(''background'', ''blue'');

Como escribió @Terry, la forma más optimizada sería:

var $c = $(".container ul li"); var $second = $c.eq(2);

Al almacenar un objeto DOM como una variable, que es el mejor uso de la práctica de esa variable:

// Option 1 var myElement1 = $(".container").find(''ul li:eq(1)''); $(myElement1).css(''background'', ''red''); // Option 2 var myElement2 = $(".container").find(''ul li:eq(2)''); myElement2.css(''background'', ''blue'');

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> <div class="container"> <ul> <li>One</li> <li>Two</li> <li>Three</li> </ul> </div>

Parece que lo he visto en ambos sentidos, y como puede ver, ambos hacen el trabajo. Las opciones 1 me parecen un poco redundantes, pero solo quería comprobar antes de asignar la Opción 2 a mi estilo personal.


Tienes razón, el primer caso es redundante, y en realidad lleva más tiempo ejecutarlo (aunque no por mucho)

Puedes ver esto en el fragmento aquí:

var s = window.performance.now(); var myElement1 = $(".container").find(''ul li:eq(1)''); $(myElement1).css(''background'', ''red''); var e = window.performance.now(); console.log(e - s); s = window.performance.now(); var myElement2 = $(".container").find(''ul li:eq(2)''); myElement2.css(''background'', ''blue''); e = window.performance.now(); console.log(e - s);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="container"> <ul> <li>One</li> <li>Two</li> <li>Three</li> </ul> </div>

Me está dando una diferencia de velocidad de 2 a 3 milisegundos.

Me quedaría con la segunda opción ya que es más limpia y más rápida.