2010-09-20 51 views
21

Quiero seleccionar una imagen (con jQuery) por el atributo src. La imagen está dentro de una ul y una colección de div's. La identificación del ul es "ordenable".jQuery seleccionar img con src

Aquí es mi HTML:

<ul id="sortable"> 
    <li id="pic_0"> 
    <div class="sortEleWrapper"> 
     <div class="imgWrapper"> 
     <img src="/test1.jpg"> 
     </div> 
     <input type="text" name="picText" id="picText" value="""" style="width:105px;color:#aaa" class="sortInput"> 
    </div> 
    <input type="hidden" id="picSrc" name="picSrc" value="/test1.jpg"> 
    </li> 
</ul> 

etc.

y aquí está mi JS:

if($('#sortable').find('img[src="/test1.jpg"]').length > 0){ 
    alert('img exists'); 
}else{ 
    alert('img doesnt exists'); 
} 

Mi problema es, que no encuentran ninguna imagen. Pero si escribo el js de esta manera:

if($('img[src="/test1.jpg"]').length > 0){ 
    alert('img exists'); 
}else{ 
    alert('img doesnt exists'); 
} 

para que encuentren la imagen.

+0

No necesita probar explícitamente la longitud. Simplemente escriba 'if ($ ('img [src ="/test1.jpg "]'). Length) {...}' –

+0

Además, no estoy seguro de por qué tiene atributos como 'value =" "" " '- eso no es HTML válido. –

Respuesta

23

No estoy seguro de por qué la diferencia, pero intente usar el selector the $= attribute ends with.

Parece que funciona.

Ejemplo:http://jsfiddle.net/bTf7K/

$('#sortable').find('img[src$="/test1.jpg"]') 

EDIT: La diferencia puede tener algo que ver con el método para obtener el valor del atributo que utiliza jQuery en diferentes momentos.

Uso de métodos nativos:

element.getAttribute("src") // returns the actual value that was set 

element.src // returns the value but with the full domain path 

así que supongo jQuery utiliza ambos en diferentes momentos.

+0

No creo que este sea el problema. Él nota que su problema tiene que ver con su selector de padres. EDITAR: retiro eso. Entiendo tu argumento. Quizás haya un informe abierto de errores para esto. – BBonifield

+1

@BBonfield - Prueba mi ejemplo. Corrige el problema. El '' es claramente un descendiente de '# sortable', sin embargo' .find ('img [src = "/ test1.jpg"]') 'falla, mientras que' .find ('img [src $ = "/ test1.jpg "] ')' tiene éxito. Aquí está la prueba de falla: http://jsfiddle.net/bTf7K/3/ – user113716

+0

sí, funciona con $. ¡¡¡¡¡Gracias!!!!! – Neoklosch