2011-03-11 153 views
6

我在FF,OP,Chrome,Safari和IE中測試了以下內容。它工作在他們之外的所有3個IE的我測試:8,7和6jQuery .trim()IE瀏覽器兼容性問題

// truncate testimonial 
var visiblePara = $('div.bannerUnder p.show'); 
if (visiblePara.text().trim().length > 150) { 
    var text = visiblePara.text().trim(); 
    var author = $('div.bannerUnder p.show > strong').text(); 
    text = text.substr(0, 150) + "..."; 
    visiblePara.text(text).append("<strong>" + author + "</strong>"); 
} 

它說:

對象不此屬性或方法,並指出支持這一行:

if (visiblePara.text().trim().length > 150) { 

可能是什麼問題?

+0

@Patrick :'長度'是一個屬性,而不是一個函數。 – 2011-03-11 18:08:48

+0

@Chuck:您將標題更改爲「jQuery .length IE瀏覽器兼容性問題」,但這不是關於.length - 關於.trim()在版本8之前的IE中不可用。 – rsp 2011-03-11 18:20:29

+0

好的。我將把函數改爲.trim(),但是我試圖在問題標題的背景下留下他最初提出的問題。 – 2011-03-11 18:24:47

回答

19

嘗試改變:

visiblePara.text().trim().length 

到:

$.trim(visiblePara.text()).length 

你甚至可以移動文本變了,像這樣的東西:

// truncate testimonial 
var visiblePara = $('div.bannerUnder p.show'); 
var text = $.trim(visiblePara.text()); 
if (text.length > 150) { 
    var author = $('div.bannerUnder p.show > strong').text(); 
    text = text.substr(0, 150) + "..."; 
    visiblePara.text(text).append("<strong>" + author + "</strong>"); 
} 
+1

感謝您拯救我的生命! – James 2011-03-11 18:55:45

4

在IE8之前,trim並不是String.prototype的一種方法。它已經在其他瀏覽器中存在了一段時間了。

我在IE8中試過了,它對我很有用。使用jQuery.trim()jQuery.trim(str) 代替