2011-03-11 155 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) 代替