8
votes

Premier mot dans la corde avec jQuery

J'essaie de comprendre la fonction qui m'aidera à envelopper le premier mot dans la chaîne en space.

mais malheureusement pas de chance.

Quelqu'un peut-il m'aider s'il vous plaît?

Merci beaucoup

dom


0 commentaires

4 Réponses :


24
votes

Une manière: xxx

[ source | Essayez-le ]

Fondamentalement, pour chaque match ( quelque chose ) Vous remplacez le premier mot avec lui-même ( 1 $ ) enveloppé dans tags. La classe de caractères \ w correspond aux lettres, chiffres et souligneurs (définissant ainsi quel "mot" est - vous pouvez avoir besoin d'une autre définition).


3 commentaires

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 . () 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.



4
votes

Vous demandez comment faire cela dans jQuery . Je pense que vous aurez besoin d'une expression régulière sur la litterlaly Ajoutez la portée .

Voici un exemple en utilisant jQuery pour obtenir un texte de la DOM et faire la mise à jour Le DOM après avoir ajouté la sur la chaîne avec une expression régulière. xxx

C'est ce que vous obtiendrez: < Pré> xxx


2 commentaires

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.



-1
votes
(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/>');
})(); 

0 commentaires

-1
votes
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++;
});

0 commentaires