La méthode .find()
recherche les éléments descendants, donc si votre élément h1 est au niveau "supérieur", il ne sera pas trouvé. Essayez .filter()
à la place:
title = $(data).filter('h1').text();
« Fondamentalement, je veux saisir l'h1 et de mettre dans la variable puis mettre le code html restant dans la variable de données »
Étant donné un paramètre data
qui est chaîne quelque chose comme ceci:
"<h1>My heading</h1><p>This is a test</p><p>This <span>is another</span> test.</p>"
Vous pouvez faire ceci:
var $data = $(data),
$title = $data.filter("h1"),
title = $title.text();
$data = $data.not($title);
Les résultats ci-dessus dans deux objets jQuery: $title
, qui contient l'élément h1, et $data
, qui contient le reste. De là, vous pouvez utiliser $title.text()
pour obtenir le texte actuel de la h1.
démonstration simple: http://jsfiddle.net/yyKCW/
Si vous voulez dire que vous voulez que le "reste html" comme une chaîne alors vous pouvez faire ce qui suit après la mise en $data
comme ci-dessus:
var restAsString = $("<div></div>").append($data).html();
Demo: http://jsfiddle.net/yyKCW/1/
Pourriez-vous fournir des exemples de données? –
Il montre réellement 'null'? Je pense qu'il montrerait une chaîne vide si aucune correspondance n'a été trouvée. –