2016-04-12 1 views
-2

je ce HTML:longueur jQuery n'a pas réussi à valider

<div id="product_imgfiles_container" class="row"> 
    <div class="col-xs-4 col-md-2"> 
     <div class="thumbnail product_imgfiles"> 
      <img src="./user/product/2016/04/07/2608/0024454001460020491/img/29310931.jpg "> 
      <a href=""><span><i class="fa fa-times-circle"></i> delete</span></a> 
     </div> 
    </div> 
    <div class="col-xs-4 col-md-2"> 
     <div class="thumbnail product_imgfiles"> 
      <img src="./user/product/2016/04/07/2608/0024454001460020491/img/29340931.jpg "> 
      <a href=""><span><i class="fa fa-times-circle"></i> delete</span></a> 
     </div> 
    </div> 
    <div class="col-xs-4 col-md-2"> 
     <div class="thumbnail product_imgfiles"> 
      <img src="./user/product/2016/04/07/2608/0024454001460020491/img/29311931.jpg "> 
      <a href=""><span><i class="fa fa-times-circle"></i> delete</span></a> 
     </div> 
    </div> 
</div> 

et je cette jquery:

$.getJSON("controller/ctrl.dropzonejs-imgfiles.php?dir=XXX",function(json){       
    $.each(json, function(key, val) { 
     alert (val); 

     if (!$("#product_imgfiles_container img[src="+val+"]").length){ 
      alert ("this val not in your HTML yet"); 
     } 

    }); 
}); 

quand il n'y a pas d'instruction IF, alert (val); peut afficher toutes les données JSON. mais quand j'ai besoin de valider avec .length, il arrête l'itération. et je ne peux toujours pas exécuter alert ("this val not in your HTML yet");.

comment correctement utiliser .length pour valider si le chemin src de json existe déjà en HTML ou pas?

+0

ce qui est la 'val' –

+0

Ce que vous avez devrait travailler, en supposant que le' val' provenant de votre JSON est correcte. Pourriez-vous s'il vous plaît ajouter un échantillon du JSON récupéré dans la requête AJAX à la question. –

+0

'' '' '' '' '' '' '' 'la chaîne encapsulée va casser la chaîne ... Essayez' $ ("# product_imgfiles_container img [src = '+ val +']") ' – Rayon

Répondre

1

Vous obtenez probablement une erreur du moteur de sélection de jQuery/votre navigateur. Vous avez besoin de mettre la valeur que vous obtenez de val entre guillemets:

$("#product_imgfiles_container img[src='"+val+"']") 
// Note -------------------------------^-------^ 

Vous pouvez utiliser la console Web pour voir des erreurs.

+0

vous avez raison, bro! c'est l'erreur et briser l'itération. Je vous remercie. –

-2

Vous pouvez changer votre état si à

if (!$("#product_imgfiles_container img").prop('src') == val){ 
      alert ("this val not in your HTML yet"); 
     } 
+1

Si vous l'aviez fait de cette façon, vous auriez besoin de faire une boucle sur chaque' img' et de vérifier la propriété –

0

Je suis sûr que la valeur "val" provenant de JSON n'est pas valide, le "val" est chemin complet avec le nom de l'image. Donc, mieux vaut utiliser uniquement le nom de l'image au lieu du chemin complet.

img src="/dummy/image/logo_header.png" 

var x = $("img[src$='logo_header.png']"); 
1

changement que vous code les suivantes: -

if ($("#product_imgfiles_container img[src='"+val+"']").length==0){ 
      alert ("this val not in your HTML yet"); 
     } 
+0

Les vidages de code sont rarement des réponses * utiles *. Dites * ce * que vous avez fait, et * pourquoi *. (Ceci est aussi juste une copie d'une réponse existante. –

+0

Pas dupliqué je l'ai testé et travaillé par moi-même ne l'obtenant de nulle part –

+0

Je ne vous ai jamais dit * copié * (si vous aviez été downvoted et marqué pour un mod), juste que quand vous voyez que une réponse que vous avez écrite a fini par être une copie de celle qui est déjà là, vous devriez simplement la supprimer, car il n'est pas utile de dupliquer les réponses existantes. C'est ce que je fais. –