2010-09-20 15 views
21

Desidero selezionare un'immagine (con jQuery) dall'attributo src. L'immagine è all'interno di un ul e una collezione di div. L'id dell'ul è "ordinabile".jQuery seleziona img con src

Ecco il mio 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> 

ecc

Ed ecco la mia JS:

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

il mio problema è, che non trovano alcuna immagine. Ma se scrivo il js in questo modo:

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

così trovano l'immagine.

+0

Non è necessario testare esplicitamente la lunghezza. Scrivi 'if ($ ('img [src ="/test1.jpg "]'). Length) {...}' –

+0

Inoltre, non sono sicuro del motivo per cui hai attributi come 'value =" "" " '- non è un codice HTML valido. –

risposta

23

Non sono sicuro del motivo della differenza, ma prova a utilizzare il selettore the $= attribute ends with.

Sembra funzionare.

Esempio:http://jsfiddle.net/bTf7K/

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

EDIT: La differenza può avere qualcosa a che fare con il metodo di ottenere il valore di attributo che jQuery utilizza in tempi diversi.

Usando metodi nativi:

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

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

Quindi immagino jQuery utilizza entrambi questi in tempi diversi.

+0

Non credo che questo sia il problema. Osserva che il suo problema ha a che fare con il suo genitore. EDIT: riprendo quello. Vedo il tuo punto. Forse c'è un rapporto bug aperto per questo. – BBonifield

+1

@BBonfield - Prova il mio esempio. Corregge il problema. Il '' è chiaramente un discendente di '# sortable', eppure esegue' .find ('img [src = "/ test1.jpg"]') 'fallisce, mentre' .find ('img [src $ = "/ test1.jpg "] ')' succede. Ecco il test non funzionante: http://jsfiddle.net/bTf7K/3/ – user113716

+0

sì, funziona con $. Grazie!!!!! – Neoklosch

Problemi correlati