2010-11-08 8 views
6

Je tire un flux JSON et je veux juste afficher un maximum de 10 caractères de la chaîne, puis faire un ... après. Comment est-ce que je fais cela avec JQuery?Définir la limite de caractères à afficher dans un paragraphe

+0

Vous modifier votre question d'inclure une partie du code que vous avez déjà écrit pour obtenir plus réponses +1 pour le nouvel utilisateur qui a voté pour aucune raison indiquée. –

Répondre

4

vous n'avez pas besoin jquery, JS peut faire:

 
string.substr(start,length) 

start The index where to start the extraction. First character is at index 0 
length The number of characters to extract. If omitted, it extracts the rest of the string 
6

Je n'ai pas vérifié cela pour une erreur, donc vous devrez peut-être ajuster pour une mauvaise indexation.

var txt = SomeStringFromFeed; 
if(txt.length > 10) 
{ 
    txt = txt.substr(0,10) + "..."; 
} 
return txt; 
11

Vous pouvez utiliser les CSS pour mettre en place des points de suspension:

.myparagraph { 
    white-space: nowrap; 
    width: 10em; 
    overflow: hidden; 
    text-overflow: ellipsis; 
} 

Ensuite, il n'y a pas besoin d'une jQuery ou autre codage.

Références:

(notez que le premier lien - Quirksmode.org est une excellente ressource généralement pour CSS et d'autres choses Javascript)

+1

Utilisation cool de CSS. Je ne savais pas à propos de débordement de texte, je vais devoir en apprendre plus à ce sujet. –

+0

ellipsis CSS est cool, mais il ne supporte qu'une seule ligne de textes – JoenasE

2

Je ne crois pas que la solution CSS mentionnée par @spudley soit cross browser (pas de support firefox). En supposant que vous vous souciez de cela bien sûr. Le premier lien qu'il fournit indique même le support limité dans le coin supérieur droit de la page. Maintenant, après avoir dit que j'ai une petite fonction qui peut être exagérée pour ce dont vous avez besoin, mais j'ai trouvé que je l'utilise régulièrement dans des situations similaires. Le code ci-dessous a été commenté, mais cela ne fait qu'insérer une ellipse après le dernier mot complet basé sur la limite définie.

Vous pouvez revenir « Le chien saute ... » au lieu de « Le chien saute ove ... »

// ============================================================================================== 
// Truncate a string to the given length, breaking at word boundaries and adding an elipsis 
//  @param str - String to be truncated 
//  @param limit - integer Max length of the string 
//  @returns a string 
// ============================================================================================== 

    function truncate(str, limit) { 
     var chars; 
     var i; 

     // check if what was passed as a string is actually a string 
     if (typeof(str) != 'string') { 
      return ''; 
     } 

     // create an array of the chars in the string 
     chars = str.split(''); 

     // if the length is greater than the set limit, process for truncating 
     if (chars.length > limit) { 
      // while the char count is greater than the limit, 
      for (i = chars.length - 1; i > -1; --i) { 
       // if char count is still greater, redefine the array size to the value of i 
       if (i > limit) { 
        chars.length = i; 
       } 
       // if char count is less than the limit keep going until you hit a space 
       // and redefine the array size to the value of i 
       else if (' ' === chars[i]) { 
        chars.length = i; 
        break; 
       } 
      } 
      // add elipsis to the end of the array 
      chars.push('...'); 
     } 
     // return the array as a string 
     return chars.join(''); 
    } 
+0

Vous avez raison, bien sûr, il n'est pas pris en charge par Firefox * encore * (bientôt j'espère?). Mais tous les autres navigateurs le supportent (même IE aussi loin que IE5.5), donc il a une bonne couverture, et même Firefox le tronque correctement. De plus, il y a des astuces pour le faire fonctionner dans Firefox en utilisant XUL ... mais c'est une toute autre question et réponse. – Spudley

+0

@Spudley c'est une bonne solution. Personnellement, j'ai hâte de savoir quand cela fonctionnera navigateur croisé. Je voulais juste m'assurer qu'il/elle (et toute autre personne qui pourrait trébucher sur cette question pour des réponses) était conscient que si leurs besoins nécessitent une solution de navigateur croisé, cela pourrait ne pas fonctionner comme ils l'espéraient. –

+0

cool. Je vais essayer d'utiliser ça – JoenasE

Questions connexes