2012-08-06 112 views
1

我正在使用名爲「embedly」的服務顯示我的提要。我想縮短這個飼料的文本,所以我嘗試:縮短純文本文本

$('.description').html(
    function(){ 
     return $.trim($(this).html()) 
       .substring(0, 100) 
       .split(" ").slice(0, -1) 
       .join(" ") + "...";} 
); 

我放在這個文件準備和同樣在「window.load」,但似乎沒有任何工作。這裏是一個例子:http://jsfiddle.net

+0

我已經updatet我的答案示例代碼,沒有時間來測試它尚未但我相信這是正確的,將盡快看看 – Cranio 2012-08-06 10:35:57

回答

2

這一個花了我很長時間才弄清楚,但我認爲你可以做的最好的是給元素加載到DOM中,然後運行你的功能:http://jsfiddle.net/2VBSX/5/

$('div.newscontainer').embedly({ 
    key:':e0a98aba95ef11e09dcd4040d3dc5c07' 
}).hide(); 

setTimeout(function() { 
    $('div.newscontainer').show().find('.description').html(
     function(){ 
      return $.trim($(this).html()) 
      .substring(0, 100) 
      .split(" ").slice(0, -1) 
      .join(" ") + "..."; 
     } 
    ); 
}, 1000); 
+0

感謝您的努力和回答:) – Youss 2012-08-06 16:39:35

2

Jquery的HTML不接受函數作爲參數,但只接受純HTML(一個字符串)。 要你wanto做什麼,可以使用.each() :)

更正:通過下面的評論者指出的那樣,我的代碼是正確的,但html的()的確接受一個函數作爲參數,在形式$(...).html(function(index, oldhtml));,使直接訪問html部分成爲可能。 (感謝@Raminson指點出來)

此前@ Raminson的觀察我的代碼是:

$('.description').each(
    function(i,e){ 
     $(e).html(reduce($(e).html()));} 
); 

function reduce(s) 
{ 
     return s.substring(0, 100) 
       .split(" ").slice(0, -1) 
       .join(" ") + "..."; 
} 

與校正,第一部分爲(仍採用reduce()功能):

$(".description").html(function(i,s) { return reduce(s); }); 
+0

does not working for me http://jsfiddle.net/2VBSX/2/ – Youss 2012-08-06 10:39:29

+0

@Youss有一個缺少括號,反正閱讀Raminson的更正和我更新的答案。 – Cranio 2012-08-06 10:42:28

+0

它不工作..我把整個事情在文檔準備 – Youss 2012-08-06 10:45:33

0

所以,我的其他答案是無效的,因爲OP沒有提到所有的元素都是動態創建的,所以他們無法用傳統的方式進行匹配。

如果將修改附加到合適的事件(例如單擊),那麼使用.on()代表將很容易,因爲它們對插入DOM中的新元素也有效。 但是,事實並非如此,我們必須對元素的創建進行操作。

一個解決方案是@CrisClower的一個(定期輪詢頁面定期查找新元素)。

另一個解決方案是使用的liveQuery插件:http://docs.jquery.com/Plugins/livequery

然後一切都會很簡單:

$(".description").livequery(function() { $(e).html(reduce($(e).html())); }); 

function reduce(s) 
{ 
    return s.substring(0, 100) 
      .split(" ").slice(0, -1) 
      .join(" ") + "..."; 
} 
+0

您的代碼無效 – Youss 2012-08-06 16:38:10

+0

@Youss您是否安裝了該插件? – Cranio 2012-08-06 22:09:57

+0

謝謝,但我是愚蠢的...嵌入API已經有內置的文字/字符參數http://embed.ly/docs/arguments – Youss 2012-08-07 10:52:05