Comment conserver les sauts de ligne lors de l'utilisation .texte() méthode pour jQuery?
Je suis en train de réaliser un de dactylographie effet et mon contenu est composé d'un lot d'entités HTML. Le problème avec l'aide de .html() est que depuis qu'il écrit chaque lettre à un moment, il va taper &
puis l
puis t
puis ;
et enfin, il allait changer de <
.
HTML
<p id="src">
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if lt IE 9]> <html class="no-js lt-ie9"> <![endif]-->
</p>
<p id="typed-paragraph">
<span id="target"></span>
<span id="typed-cursor">|</span>
</p>
CSS
#src {
display: none;
}
jQuery
(function(){
var srcText = $("#src").html();
i = 0;
result = srcText[i];
setInterval(function() {
if(i == srcText.length-1) {
clearInterval(this);
return;
};
i++;
result += srcText[i].replace("\n", "<br />");
$("#target").html(result);
}, 150); //the period between every character and next one, in milliseonds.
})();
Vous pouvez voir un exemple ici
http://jsfiddle.net/j9KF5/9/
Mais si j'utilise .texte() puis je perds tous les sauts de ligne.
En fin de compte, comment je peux corriger les entités problème ou le saut de ligne problème?
- Essayez de ne pas encoder() fonction javascript à la page html que vous essayez de rendre à la volée de manière à ce que votre html char codes sont remplacés par les informations nécessaires avant de commencer l'impression.
- ce n'est vraiment pas utile.
- Veuillez inclure un exemple complet dans la question elle-même, et pas seulement un lien. "Pour être clair, des liens vers jsfiddle et des services similaires sont OK, mais d'une question ou d'une réponse doit se tenir debout sur ses propres. Assez de renseignements qui doivent être inclus dans un post encore le rendre utile pour les futurs visiteurs, même si tous les liens ont été à la pause, en d'autres termes." meta.stackexchange.com/a/151616/133242
- FWIW, j'aime bien ce "multi-ligne de chaîne" approche: jsfiddle.net/j9KF5/13
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin de vous soucier des entités HTML, ni aucun complexe de la chaîne de remplacement.
Tous vous avez besoin est un peu de CSS:
et l'utilisation de la
.text()
approche:http://jsfiddle.net/mattball/vsb9F/
.text()
n'..text()
, rien de plus. Lire de la doc, peut-être?whitespace: pre-wrap
, ce qui évite de longues lignes rendre la zone plus largePour quiconque est à la recherche de ce que le titre de la question demande réellement (c'est comment j'en suis arrivé à cette page, "comment conserver les sauts de ligne lors de l'utilisation de jQuery text() la méthode"), vous pouvez utiliser quelque chose comme ceci:
Maintenant appeler $('.quelques-classe").innerText() pour obtenir le texte avec des sauts de ligne préservés.
Pourquoi ne pas utiliser
.replace
sur lesrcText
variable.De placer une série de
.replace
les appels à l'intérieur d'une fonction, à chaque appel modifié pour un autre personnage serait de nettoyer l'ensemble de la chaîne avant de l'imprimer à l'écran.☃
? Ce n'est pas une solution viable solution générale.