【问题标题】::contains issue on IE8:包含 IE8 上的问题
【发布时间】:2012-01-04 15:17:34
【问题描述】:

jQuery :contains 选择器似乎在 IE8 上不起作用。

请在 IE 上查看以下示例 - LIVE DEMO

JS:

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

【问题讨论】:

  • 我看不到你的小提琴,因为 jsFiddle 像往常一样慢,但请尝试转义 +,如下所示:$('table tr td:contains(" \+ ")')
  • @RoryMcCrossan - 使用转义字符无济于事
  • 您首先告诉我们带空格的选择器不起作用,然后您的更新告诉我们不要使用空格。是哪个?
  • @Tomalak Geret'kal - 抱歉,这不是更新 - 这是问题的替代解决方案。
  • @NewUser:请不要在问题中写答案。把它们写成答案。

标签: javascript jquery jquery-selectors contains


【解决方案1】:

IE8 :contains 问题的另一个更简单的解决方案:

确保您在字符串中没有使用空格,例如

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

【讨论】:

    【解决方案2】:

    您需要将 TD 中的空格转换为 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>
    

    但是,它在现代浏览器上会失败,因此解决方案是替换这些浏览器的实体。只需在你的之前添加这个 sn-p,它就可以完成这项工作。

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

    【讨论】:

    • IE8 会忽略空格,所以实际上是“+”而不是“+”。但是在 JS 中,你也可以使用 :contains(" + ") ,不需要将空格转换为 HTML 实体
    • 使用 &amp;nbsp;+&amp;nbsp; 可以在 IE 上运行,但现在可以在 FF 或 Chrome 上运行。解决办法是什么?
    猜你喜欢
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    相关资源
    最近更新 更多