2011-01-07 1 views
1

Je cherche à savoir si une erreur est renvoyée par une requête AJAX. pour tester la demande retourne toujours <p id="error">test</p>jquery - recherche si l'élément est dans la variable

Je pensais que vous pourriez le faire comme ceci:

//html is the var which contains the result 
var DOM = $(html); 
if($('#error', DOM).length != 0) { 
    alert(html);  
} 

mais cela ne fonctionne pas. Quelqu'un peut-il faire la lumière sur ce qui ne va pas?

Répondre

2

Si votre code HTML est pas enveloppé dans quelque chose (comme un div), il doit être.

var html = '<div></div><p id="error">ERROR!</p><span>other stuff</span>'; 

var DOM= $('<div>' + html + '</div>'); 
if($('#error', DOM).length != 0) { 
    alert(html);  
} 

Exemple: http://jsfiddle.net/jonathon/exqTD/

(je pensais que cela aiderait wrap ici, mais il ne fonctionne pas si quelqu'un sait pourquoi il pointer sur.).

Sinon, le contexte de sélection est mis en œuvre à l'aide find, vous pouvez donc faire:

if(DOM.find('#error').length != 0) { 
    alert(html);  
} 
+0

Merci! cette chaîne avec le div le résoudre. ++ 1 – Aristos

1

Il n'est pas inséré dans le DOM, vous ne pouvez donc pas le rechercher avec un sélecteur.

Vous pouvez essayer d'utiliser une expression rationnelle simple avec la fonction test() sur la variable.

if (html.test(/id="error"/i)) { 
    ... 
} 
0

Vérifiez si cela aide:

$('body').append('<div class="hidden_div">'+html+'</div>'); 
if($('#error',$('.hidden_div')).size()>0){ 
    alert(html); 
} 

il suffit d'ajouter dans le css

.hidden_div{display:none;} 

et qui devrait être, oh et vous pouvez utiliser .length ou .size()

ou vous pouvez simplement utiliser:

if(html.indexOf('id="error"')>-1){alert('yes we have an error!');} 

Vive

G.

0

Vous pouvez utiliser la fonction de recherche:

if ($(html).find("#error").length != 0) 
{ 
    alert(html);  
} 
Questions connexes