J'ai un exemple d'élément comme celui-ci: Il peut aussi ressembler à ceci: p> Je veux obtenir le premier ligne (définition de la ligne lâchement) (bla bla bla.) de texte à l'intérieur de l'élément. Il pourrait être enveloppé à l'intérieur d'un élément enfant ou juste être nue TextNode. Comment je fais ça? Merci. P> p>
5 Réponses :
d'abord obtenir le contenu de l'élément puis diviser le texte en une matrice à l'aide de la pause de la ligne p> la première partie de La matrice est la première ligne de l'élément p>
J'ai pensé d'abord, quelle ligne, mais je vois en FX au moins il y a. Il est toutefois dangereux de compter sur. Voici la première ligne: alerte ($ ("# élément"). Texte (). Split (/ \ n /) [1]) code> Le [0] Th est une chaîne vide ... jsfiddle.net/mplungjan/qqusp
Voici une idée pour vous. Bien sûr s'il y a un élément H4 avant la ligne que vous souhaitez obtenir:
var content = $('#element').html();
var arr = content.split('<h4>');
console.log(arr[0]);
/\s*</.test(myElement.html())
Ne fonctionne pas pour le premier cas, je crois, cela correspondra à l'en-tête plutôt que le bla bla blaha (aurait peut-être dû choisir un meilleur exemple de texte lol)
Si vous obtenez
Utilisez le Contenu () Code> [docs] I> sup> méthode pour obtenir tous les enfants, y compris les nœuds de texte, filtrer tous les nœuds vides (ou espaces uniquement), puis saisissez le premier de l'ensemble.
var first_line = $("#element")
.contents()
.filter(function() {
return !!$.trim( this.innerHTML || this.data );
})
.first();
Merci, cependant pour moi, cela retourne un objet plutôt que du texte, devrais-je juste avant [0]?
Oui, cela vous donne un objet JQuery avec l'élément ou le noeud de texte. Si vous souhaitez le contenu du texte, utilisez first_line.text () code>. Si vous voulez vous éloigner de la tête et de la trailing WhitSpace, faites $. Trim (first_line.text ()) code>.
Salut pouvez-vous expliquer pourquoi vous revenez !!? Quel est !!?
Il convertit en équivalent booléen de la valeur. Après la coupe, si .innerHTML code> ou .data code> retourne une chaîne vide, !! code> convertir en booléen false code> , parce qu'une chaîne vide est considérée comme une valeur « Falsey ». Toute chaîne non vide entraînera true code>. title="can quelqu'un expliquer ce double négatif stackoverflow.com / questions / 4686583 / ...
+1 De moi, mais la performance-Warie peut vouloir envisager d'utiliser $. Chaque () code> plutôt que filtre () code>. C'est un peu tard dans la journée pour moi, mais un exemple de ceci est jsfiddle.net/andye/yftnh / 3 (ignorer la révision 2, je suis à moitié endormi ici!)
@Andy e Avez-vous un lien ou quelque chose qui explique la signification du filtre VS chacune des performances?
@Andy E: Nice. Excellente utilisation de l'opérateur des virgules aussi. @Harry: Cela vous permet d'arrêter la boucle une fois que vous avez trouvé un nœud non vide. Avec .filter () code> Vous devez laisser la boucle exécuter pour chaque élément que .Contents () code> retourne.
@Harry: À peu près ce que @Patrick_DW a dit. Si le contenu de l'élément s'avère être de 200 nœuds, la fonction Filtre () Code> est exécutée sur chacun de ces nœuds. Chaque () code> peut être cassé de sorte qu'il s'arrête en cours d'exécution après avoir trouvé ce que vous recherchez.
@Andy E: Pour le plaisir, voici une seule virgule retour!
Le compteur commence à 1