jquery ajax $ .get résultat ne trouve pas la classe

Je me suis retrouvé coincé dans un problème apparemment simple.

Je veux récupérer le code HTML résultant d’une requête ajax et voir si un élément spécifique a une classe spécifique, puis prendre le code HTML d’un autre élément de la réponse et l’utiliser pour remplacer quelque chose, etc.

$(function() { $('.js-nav').on('click', function(e) { e.preventDefault(); var $this = $(this); var $url = $this.attr('href'); $.get($url.url, function(response) { var $response = $(response); var $body = $response.find('.js-wrapper').html(); var _isLight = $response.find('.js-wrapper').hasClass('body-light'); console.log($body); console.log(_isLight); History.pushState({ state:$url }, $title, $url); }); }); }); 

La console renvoie ceci:

 undefined false 

Maintenant, l’élément .js-wrapper ne se trouve pas dans l’en-tête mais sur un div qui est à l’intérieur du corps.

La réponse HTML (console.logged après sa récupération avec $ .get) se présente comme suit:

     <!--    some title ...      

(J’ai inclus l’appel historyJS juste au cas où il pourrait avoir quelque chose à voir avec cela)

L’aide est, comme toujours, appréciée.

Je voudrais d’abord faire écho à la réponse et veiller à ce que vous récupériez le code HTML correct.

Ensuite, vous pouvez confirmer que vous avez le code HTML avec la classe spécifique.

Le .hasClass est exactement ce que vous voulez, le non défini est probablement parce que vous ne récupérez pas le code HTML, pour confirmer la consignation par la console.

utilisez $ (‘Votre Div’). contents ();

Pour obtenir le contenu HTML

Puis $ (‘Où vous voulez placer le code html Div’). Append (Votre div);

On dirait que vous essayez d’obtenir une propriété qui ne devrait pas exister, c’est-à-dire

 $url.url 

Votre bloc de code $ .get devrait ressembler à ceci

  $.get($url, function(response) { var $response = $(response); var $body = $response.find('.js-wrapper').html(); var _isLight = $response.find('.js-wrapper').hasClass('body-light'); console.log($body); console.log(_isLight); History.pushState({ state:$url }, $title, $url); }); 

Semble travailler dans le

 { http://jsfiddle.net/Px6tu/ } 

Essayez d’essayer de consigner la réponse par la console pour vous assurer que vous obtenez le résultat attendu.

Consultez également Ajax Response Recherche de fragments HTML à l’aide de la recherche

Grâce au commentaire de @Girish Sakhare et à @Alexanders , ma solution est la suivante:

 var $response = $("
").html(response);

Donc, la fonction ressemble à ceci maintenant:

 $(function() { $('.js-nav').on('click', function(e) { e.preventDefault(); var $this = $(this); var $url = $this.attr('href'); $.get($url, function(response) { var $response = $("
").html(response); var $body = $response.find('.js-wrapper').html(); var _isLight = $response.find('.js-wrapper').hasClass('body-light'); console.log($body); console.log(_isLight); History.pushState({ state:$url }, $title, $url); }); }); });

Je devais donc d’abord annexer la réponse à une div vide.

Merci