J'essaie de comprendre la fonction qui m'aidera à envelopper le premier mot dans la chaîne en space. P>
mais malheureusement pas de chance. p>
Quelqu'un peut-il m'aider s'il vous plaît? p>
Merci beaucoup P>
dom p>
4 Réponses :
Une manière: [ source | Essayez-le ] sup> p> Fondamentalement, pour chaque match ( quelque chose code>) Vous remplacez le premier mot avec lui-même ( 1 $ code>) enveloppé dans code> tags. La classe de caractères \ w code> correspond aux lettres, chiffres et souligneurs (définissant ainsi quel "mot" est - vous pouvez avoir besoin d'une autre définition). P> P>
Bonne réponse, et si vous avez votre verbage dans quelque chose comme un champ de "texte", assurez-vous simplement de cibler votre destination comme une chose qui accepte le balisage HTML.
@Dom vous êtes bienvenue :) Re: Votre commentaire sur la solution @ Ben: Oui, vous devez itérer via la méthode . () Code> afin de manipuler plusieurs nœuds.
Si vous travaillez avec des caractères Unicode, vous trouverez peut-être tout ce que vous devez chercher tout jusqu'à ce que le premier espace: / ([^ \ s] +) / - Cependant, avec des langues comme japonais cela ne fonctionnera pas.
Vous demandez comment faire cela dans Voici un exemple en utilisant C'est ce que vous obtiendrez: p> < Pré> xxx pré> p> jQuery code>. Je pense que vous aurez besoin d'une expression régulière sur la litterlaly Ajoutez la portée em>. jQuery code> pour obtenir un texte de la DOM et faire la mise à jour Le DOM après avoir ajouté la code> sur la chaîne avec une expression régulière. p>
Malheureusement, si j'ai un '#Container' à la page, cela les modifiera vers ce même HTML. Ça marche mais seulement pour id
Cela fonctionnera si le HTML n'est que du texte, mais s'il existe des balises HTML, telles que le "premier mot", cela ne fonctionnera pas.
(function () {
var node = $("div").contents().filter(function () { return this.nodeType == 3 }).first(),
text = node.text(),
first = text.slice(0, text.indexOf(" "));
if (!node.length)
return;
node[0].nodeValue = text.slice(first.length);
node.before('<span>' + first + '</span><br/>');
})();
var first;
var i=0;
$("p").each(function() {
first = $("p")[i].innerHTML;
$("p")[i].innerHTML = "<span class='first'>" + first.slice(0, first.indexOf(' ')) + "</span>" + first.slice(first.indexOf(' '));
i++;
});