2010-10-27 2 views
0

Je suis en dessous de JQuery où j'exécute la fonction .load.Comment vérifier .class existant dans un texte de réponse dans jquery

$(".load-fragment").each(function()   
     {   
      var $objThis = $(this); 
      var fname = $objThis.attr("href"); //Getting the href of the element 
      var dynDivID = "divContent"+ $objThis.attr("id"); //Name of the dynamic div ID 
      var newDiv = $("<div>").attr("id",dynDivID) 
      .load(fname+ " #tab-container", {pupdate:"true"},function(response, status, xhr) 
      { 
       if ($(response+".formContainer").length) 
       { 
        $objThis.removeClass('load-fragment');              
       }  
       if (status == "error") 
       {    
        newDiv.removeClass('dynDiv'); 
        newDiv.addClass('errorDiv'); 
       } 
      })//Loading page fragment from the given link 
      .hide()//Hiding all the newly created DIVs 
      .addClass('dynDiv')//Adding CSS to newly created Dynamic Divs 
      .append($('<img/>').attr({ src: '/system/Images/ajax-loader-circle-thickbox.gif', alt: '', style:'margin:50px 0px 50px 185px' }));//Adding the loading.gif file 
      $("#container-4").append(newDiv);//adding new div in div column2 
     }); 

En fonction .load ci-dessus, je suis en train de charger un fragment de page à partir de la page liée. Je reçois la réponse dans un format html ci-dessous.

<div class="tabs-container" id="tab-container"> 
    <div class="contentContainer"> 
     <div class="contentContainer"> 
      <p> 
       Book your New Delhi flights with Emirates and experience our award-winning service 
       flying direct to Australia's most iconic city.</p> 
     </div> 
    </div> 
    <div class="formContainer"> 
     <p>Testing</p> 
    </div> 
</div> 

Maintenant, je veux vérifier dans le texte de réponse s'il formContainer classe existe dans la réponse ou non et effectuer certains travaux. Voici le code que j'essaie mais ça ne marche pas pour moi.

.load(fname+ " #tab-container", {pupdate:"true"},function(response, status, xhr) 
       { 
        if ($(response+".formContainer").length) 
        { 
         $objThis.removeClass('load-fragment');              
        }  
        if (status == "error") 
        {    
         newDiv.removeClass('dynDiv'); 
         newDiv.addClass('errorDiv'); 
        } 
       }) 

Veuillez nous suggérer!

Répondre

1

Vous pouvez simplement insérer cet extrait HTML dans un objet jQuery et utiliser ses méthodes DOM.

if($(response).filter('#tab-container').find('.formContainer').length) { 
    // class .formContainer was found 
} 

Ici, je suis en utilisant la méthode .filter() pour saisir la #tab-container div. Vous ne pouvez pas utiliser .find() sauf si vous intégrez cet extrait complet dans un autre div créé par exemple. Dans ce cas particulier, vous pouvez même utiliser $(response).first().find()..., mais .filter() est plus fiable là-bas.

Une autre façon (ce qui est plus rapide, mais pas recommandé à moins de savoir exactement ce que vous faites & transfert) est d'utiliser un Javascript .indexOf() plaine sur votre réponse.

if(response.indexOf('class="formContainer"') > -1) { 
    // class .formContainer was found 
} 

Référence: $(), .find(), .filter()

+0

Merci andy, mais si je veux vérifier dans la réponse sous div # onglet conteneur, juste pour être plus sûr de ma fin –

+0

@Solution: mise à jour – jAndy

+0

Merci beaucoup mais le filtre ne fonctionne pas mais trouvez des travaux au lieu de ça –

Questions connexes