2011-09-25 88 views
1

我試圖找出一種方法來完成2件事:

1.在4個字符或第一個單詞之後的換行符。
2.截斷+添加 「...」(僅當字符量超過20個字符)jquery添加換行符並截斷+在x個字符後添加「...」

實施例:2008 WALKER站BRIDGE 1.5L

難道想顯示:
2008年
WALKER STATION ...

我需要#1發生每一次,但只有#2,如果文本是比較20個字符。

我已經得到了線打破用下面的代碼:

$(window).load(function(){ 
    $(".wine-name").each(function() { 
    var html = $(this).html().split(" "); 
    html = html[0] + "<br>" + html.slice(1).join(" "); 
    $(this).html(html); 
}); 

HTML:

<div class="wine-name">2008 WALKER STATION THE BRIDGE 1.5L</div> 

回答

1

在這裏你去:

$('.wine-name').each(function() { 
    var words, str; 

    words = $(this).text().split(' '); 
    str = words.shift() + '<br>'; 

    while (words.length > 0 && (str.length + words[0].length) < 24) { 
     str += ' ' + words.shift(); 
    } 

    if (words.length > 0) { 
     str += ' ...'; 
    } 

    $(this).html(str);  
}); 

現場演示:http://jsfiddle.net/XpmpQ/1/

+0

這正是我在尋找!謝謝。 – rod

0

好了,你可以設置它使用text-overflow財產,這是非常威爾的CSS方式支持(但在FF中出於某種奇怪的原因),根據您的需要,CSS方式(無腳本)可以完成這項工作,甚至更好。如果您不知道我在說什麼,請通過搜索text-overflow ellipsis來查看Google。

對不起,如果你已經知道這一點,我只是指出了一個替代方案,我認爲會有所幫助。這樣做的

1

一種方法是使用:

var string, p1,p2,p3; 

$('.wine-name').each(
    function(){ 
     string = $(this).text(); 
     p1 = string.substring(0,4); 
     p2 = string.substring(5); 
     if (p2.length > 20){ 
      p3 = p2.substring(0,19) + '...'; 
      p2 = p3; 
     } 
     newString = p1 + '<br />' + p2; 
     $(this).html(newString); 
    }); 

JS Fiddle demo

0

我認爲你正在尋找的東西是這樣的:

var s = "2008 hello world"; 
// Find the index of the first space or use 4 
var i = Math.min(4, s.indexOf(" ")); 
var part1 = s.substr(0, i); 
var part2 = s.substr(i); 
// Add ellipsis if part2 is longer than 5 characters 
if (part2.length > 5) part2 = part2.substr(0, 5) + '..'; 
// Output for testing 
alert('"' + part1 + '", "' + part2 + '"'); 

jsFiddle demo