2010-11-08 9 views
6

Wyciągam z kanału JSON i chcę wyświetlić maksymalnie 10 znaków ciągu, a następnie zrobić ... później. Jak to zrobić z JQuery?Ustaw limit znaków do wyświetlania w akapicie

+0

edytować swoje pytanie do obejmują niektóre kodu zostały już napisane, aby uzyskać więcej odpowiedzi. +1 dla nowego użytkownika, który przegłosował głosowanie bez żadnego powodu. –

Odpowiedz

4

nie trzeba jQuery, JS może to zrobić:

 
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

Nie zaznaczyłem tego dla jednego błędu, więc być może będziesz musiał poprawić słabe indeksowanie.

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

Można użyć CSS skonfigurować wielokropek:

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

to nie ma potrzeby jakiegokolwiek jQuery lub inne kodowanie.

Referencje:

(zauważ, że pierwszy link - Quirksmode.org jest doskonałym źródłem ogólnie dla CSS i JavaScript rzeczy)

+1

Fajne użycie CSS. Nie wiedziałem o przepełnieniu tekstu, będę musiał dowiedzieć się więcej na ten temat. –

+0

CSS ellipsis jest fajny, ale obsługuje tylko jedną linię tekstu. – JoenasE

2

Nie wierzę, że wspomniane przez @spudley rozwiązanie CSS to przeglądarka (brak obsługi firefox). Zakładając, że troszczysz się o to oczywiście. Pierwszy podany przez niego link podaje nawet ograniczone wsparcie w prawym górnym rogu strony.

Teraz, po powiedziawszy, że mam fajną małą funkcję, która może być przesadą dla tego, czego potrzebujesz, ale odkryłem, że używam tego regularnie w podobnych sytuacjach. Poniższy kod został skomentowany, ale tylko wstawia wielokropek po ostatnim pełnym słowie na podstawie ustawionego limitu.

więc można wrócić „Pies skacze ...” zamiast „Pies skacze 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

Masz rację, oczywiście, nie jest to obsługiwane przez Firefox * jeszcze * (wkrótce mam nadzieję?). Ale wszystkie inne przeglądarki obsługują go (nawet IE aż do IE5.5), więc ma dobry zasięg, a nawet Firefox go obcina poprawnie. Plus są hacky work-arounds, aby działało w Firefoksie przy użyciu XUL ... ale to jest całe inne pytanie i odpowiedź. – Spudley

+0

@Spudley to dobre rozwiązanie. Osobiście czekam, kiedy to będzie działać w przeglądarce krzyżowej. Chciałem tylko upewnić się, że on (i każdy, kto mógłby natknąć się na to pytanie w odpowiedzi na pytania), był świadomy, że jeśli ich potrzeby wymagają rozwiązania opartego na przeglądarce, może nie działać tak jak im się spodziewano. –

+0

fajne. Spróbuję tego użyć – JoenasE

Powiązane problemy