2010-09-20 12 views
21

Chcę wybrać obraz (z jQuery) przez atrybut src. Obraz jest wewnątrz ul i kolekcji div. Identyfikator ul jest "sortable".jQuery wybierz img z src

Tu jest mój 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> 

itp

i tu jest moje JS:

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

Moim problemem jest to, że nie znaleźliśmy żadnego obrazu. Ale jeśli napiszę js w ten sposób:

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

dzięki czemu znajdują obraz.

+0

Nie musisz dokładnie testować długości. Po prostu napisz 'if ($ ('img [src ="/test1.jpg "]'). Length) {...}' –

+0

Ponadto, nie jestem pewien, dlaczego masz atrybuty takie jak "value =" "" " '- To nie jest prawidłowy HTML. –

Odpowiedz

23

Nie jestem pewien, dlaczego różnica, ale spróbuj użyć selektora the $= attribute ends with.

Wydaje się działać.

Przykład:http://jsfiddle.net/bTf7K/

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

EDIT: Różnica może mieć coś wspólnego ze sposobem uzyskiwania wartość atrybutu, który używa jQuery w różnych czasach.

wykorzystaniem metod natywnych:

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

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

Więc zgaduję jQuery korzysta zarówno z nich w różnych momentach.

+0

Nie wierzę, że to jest problem. Zauważa, że ​​jego problem dotyczy selektora nadrzędnego. EDYCJA: Biorę to z powrotem. Rozumiem co masz na myśli. Być może jest to otwarty raport o błędzie. – BBonifield

+1

@BBonfield - Przetestuj mój przykład. To rozwiązuje problem. '' jest oczywiście potomkiem '# sortable', ale wykonanie' .find ('img [src = "/ test1.jpg"]') kończy się niepowodzeniem, podczas gdy '.find ('img [src $ ="/test1.jpg "] ')" się powiódł. Oto test awarii: http://jsfiddle.net/bTf7K/3/ – user113716

+0

tak, działa z $. Dziękuję Ci!!!!! – Neoklosch

Powiązane problemy