2011-11-23 74 views
3

看来jQuery :contains选择器在IE8上不起作用。:在IE8上包含问题

请参阅IE下面的例子 - LIVE DEMO

JS:

$('table tr td:contains(" + ")').each(function(){ 
     $(this).addClass('url'); 
}); 
+0

我看不到你的小提琴,因为jsFiddle像往常一样慢,但尝试转义'+',像这样:'$('t能够使用tr td:contains(“\ +”)')' –

+0

@RoryMcCrossan - 它不会帮助使用转义字符 – Varun

+0

您首先告诉我们,带空格的选择器不起作用,您的更新告诉我们不要使用空格。这是什么? –

回答

4

您需要的空间转换在您的预扣税为HTML实体( 

$('table tr td:contains(" + ")')工作。 (同JS/CSS)

HTML:

<table> 
    <tr> 
     <td>&nbsp;+&nbsp;</td> 
     <td> 1 </td> 
     <td> 3 </td> 
     <td> 6 </td> 
     <td> 7 </td> 
    </tr> 
</table> 

但是它会失败在现代的浏览器,因此该解决方案是,以取代实体为这些浏览器。只要在这之前加上这个片段,它就可以完成这项工作。

if(!($.browser.msie && $.browser.version < 10)){ 
    $('table tr td').each(function(){ 
     $(this).html($(this).html().replace(/&nbsp;/gi, ' ')); 
    }); 
} 
+1

IE8会忽略空白,所以实际上它是“+”而不是“+”。但在JS中,你也可以使用:contains(“+”),不需要将空白转换为HTML实体。 – Chris

+1

使用'  +  '将可用于IE,但现在可用于FF或Chrome。解决办法是什么? – Iladarsda

+0

回答更新,现在适用于现代浏览器。 – Pierre

0

另一种更简单的解决IE8 :contains问题:

确保您不使用字符串的内部空间,如

$('table tr td:contains("+")')将工作即使你的HTML有空格<td> + </td>