$ (esto + “selector”)? $ (“Img”, esto) posible?

Estoy tratando de “seleccionar” un img dentro de un selector $ (este). Sé que puedo encontrarlo usando .find('img') pero es posible:

$("img",this) ?

¿Cuál es la forma más óptima de hacer esto?

Codigo original

  awesome  

¿Cuál es la forma más óptima de hacer esto?

Tanto $(this).find('img') como $('img', this) son equivalentes.

De la documentación:

Internamente, el contexto del selector se implementa con el método .find (), por lo que $ (‘span’, esto) es equivalente a $ (this) .find (‘span’).

http://api.jquery.com/jQuery/

Esa es una perfecta manera razonable de hacerlo.

Entonces te gustaría:

 $('a').click( function() { //if the element dosent change you can use this //var src = $('img', this).attr('src'); //else use $(this) var src = $('img', $(this)).attr('src'); alert(src); return false; }); 

Ver: http://jsfiddle.net/xYmwV/

Realmente no hay diferencia, ya que en ambos métodos se carga el elemento dom y se busca. Su forma de curso es “más limpia” y más simple, pero puede ser más confusa 🙂

Una forma más rápida sería $(this).children() ya que entonces no tendría que buscar elementos, sino que va directamente hacia abajo en el DOM. Pero saca la flexibilidad del guión.

Sí, puedes hacer eso … de todos modos son equivalentes, así que solo es cuestión de tus ‘gustos sintácticos’:

Internamente, el contexto del selector se implementa con el método .find (), por lo que $ (‘span’, esto) es equivalente a $ (this) .find (‘span’).

http://api.jquery.com/jQuery/

Realmente no importa, elija lo que prefiera, es principalmente una elección estilística.

jQuery maneja la forma $(selector, context) haciendo $(context).find(selector) o (si el context ya es una instancia de jQuery) context.find(selector) debajo de las cubiertas, por lo que en teoría la forma de find es un poco más eficiente, pero de ninguna manera es muy probable que importe.

Estoy tratando de “seleccionar” un img dentro de un selector $ (este).

 var myImg = $(this).find("img"); 

¿Por qué no puedes usar .find('img') ? me funciona: http://jsfiddle.net/nnmEY/