2010-09-20 7 views
21

Je souhaite sélectionner une image (avec jQuery) avec l'attribut src. L'image est dans un ul et une collection de div. L'identifiant de l'ul est "triable".jQuery sélectionnez img avec src

Voici mon 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.

et voici mes js:

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

Mon problème est qu'ils ne trouvent aucune image. Mais si j'écris le js comme ceci:

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

afin qu'ils trouvent l'image.

+0

Vous n'avez pas besoin de tester explicitement la longueur. Il suffit d'écrire 'if ($ ('img [src ="/test1.jpg "]'). Length) {...}' –

+0

Aussi, je ne sais pas pourquoi vous avez des attributs comme 'value =" "" " '- ce n'est pas un code HTML valide. –

Répondre

23

Je ne sais pas pourquoi la différence, mais essayez d'utiliser le sélecteur the $= attribute ends with.

Semble fonctionner.

Exemple:http://jsfiddle.net/bTf7K/

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

EDIT: La différence peut avoir quelque chose à voir avec la méthode d'obtenir la valeur d'attribut que jQuery utilise à des moments différents.

Utilisation des méthodes natives:

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

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

Je devine que jQuery utilise les deux à des moments différents.

+0

Je ne crois pas que ce soit le problème. Il note que son problème a à voir avec son sélecteur parent. EDIT: Je le reprends. Je vois ce que tu veux dire. Peut-être y a-t-il un rapport de bug ouvert pour cela. – BBonifield

+1

@BBonfield - Testez mon exemple. Cela corrige le problème. Le '' est clairement un descendant de '# sortable', mais fait' .find ('img [src = "/ test1.jpg"]') 'échoue, alors que' .find ('img [src $ = "/ test1.jpg "]") "réussit. Voici le test d'échec: http://jsfiddle.net/bTf7K/3/ – user113716

+0

oui, cela fonctionne avec le $. Je vous remercie!!!!! – Neoklosch

Questions connexes