2010-09-20 18 views
21

Ich möchte ein Bild (mit jQuery) durch die src Attribut auswählen. Das Bild befindet sich in einer ul und einer Sammlung von Divs. Die ID der UL ist "sortierbar".jQuery wählen Sie img mit src

Hier ist mein 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> 

usw.

und hier ist mein js:

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

Mein Problem ist, dass sie jedes Bild nicht finde. Aber wenn ich die js so schreibe:

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

so finden sie das Bild.

+0

Sie müssen die Länge nicht explizit testen. Schreiben Sie einfach 'if ($ ('img [src ="/test1.jpg "]'). Length) {...}' –

+0

Auch ich bin mir nicht sicher, warum Sie Attribute wie 'value =" "" "" '- das ist kein gültiges HTML. –

Antwort

23

Ich bin mir nicht sicher, warum der Unterschied, aber versuchen Sie mit the $= attribute ends with Selektor.

Scheint zu arbeiten.

Beispiel:http://jsfiddle.net/bTf7K/

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

EDIT: Der Unterschied kann etwas mit der Methode des Erhaltens des Attributwertes, dass jQuery verwendet zu unterschiedlichen Zeiten zu tun.

mit nativen Methoden:

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

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

So vermute ich jQuery diese beiden zu unterschiedlichen Zeiten verwendet.

+0

Ich glaube nicht, dass das das Problem ist. Er stellt fest, dass sein Problem mit seinem Elternselektor zu tun hat. EDIT: Ich nehme das zurück. Ich verstehe dein Argument. Vielleicht gibt es dafür einen offenen Fehlerbericht. – BBonifield

+1

@BBonfield - Testen Sie mein Beispiel. Es korrigiert das Problem. Die '' ist eindeutig ein Nachkomme von '# sortable', doch' .find ('img [src = "/ test1.jpg"]') '' scheitert, während '.find ('img [src $ ="/test1.jpg "] ') ist erfolgreich. Hier ist der fehlgeschlagene Test: http://jsfiddle.net/bTf7K/3/ – user113716

+0

ja, es funktioniert mit dem $. Vielen Dank!!!!! – Neoklosch