jquery encuentra versus selección de contexto

Tener el siguiente fragmento de html

Some text

some other text

Creo que los siguientes fragmentos de jquery son idénticos (tendrán el mismo resultado):

 $(".something").find("p").css("border", "1px solid red"); $("p", ".something").css("border", "1px solid red"); 

Mi pregunta es si un fragmento es mejor que el otro y se debe usar

Las llamadas no son idénticas.

Según Brandon Aaron, quien aparentemente trabajó en jQuery, y también de acuerdo con las pruebas en vivo aquí , el método de búsqueda es siempre más rápido. Vea los resultados en la captura de pantalla a continuación. Por favor coméntame si me falta algo.

Con una diferencia del 10% o más en la velocidad, dependiendo del navegador, definitivamente vale la pena usar find.

Más explicaciones en el sitio de Brandon están aquí .

Resultados de la comparación de rendimiento entre el contexto de jQuery y el método de búsqueda jQuery

Ambas llamadas son idénticas. La última llamada se traduce a la anterior. Si quiere omitir el paso de traducción, use el anterior.

Puedo pensar en un caso de uso en el que sea preferible usar el formulario de context , en el caso de que el contexto esté contenido en una variable que podría ser nula.

Por ejemplo:

 // 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(){ } ); } 

La segunda vez que se llama a do_something() , si hubiéramos usado $parent_element.find() , habría fallado, mientras que en este ejemplo, si $parent_element no está definido o está vacío, el contexto es nulo, por lo tanto: todo el documento.

Es cierto que este es un caso extremo, pero surgió en algo en lo que estaba trabajando, así que pensé en ponerlo aquí para la posteridad.

Encontrar es mejor, en un 40%:

http://jsperf.com/jquery-find-vs-context-2/13

Tenga en cuenta la diferencia:

 $myDiv = $("myDiv") myDiv = "#myDiv" 

al pasar $myDiv , el elemento jQuery como contexto, es aproximadamente un 10% más lento que $ .find. al pasar #myDiv , el selector jQuery como contexto, es un 40% más lento que $ .find.

$ .find> contexto.