代码之家  ›  专栏  ›  技术社区  ›  Soufiane Hassou

正则表达式在IE6/IE7中的行为不同

  •  0
  • Soufiane Hassou  · 技术社区  · 16 年前

    我的HTML是这样的:

    <select>
        <option>ABC (123)</option>
        <option>XYZ (789)</option>
    </select>
    

    我试图做的是:使用JQuery和正则表达式,我用 <span>( 以下是我的JQuery行:

    $(this).html($(this).html().replace(/\(/g,"<span>("));
    

    它在Firefox、chrome和safari中正常工作,但(像往常一样)在IE6/IE7(在“(“刚刚被删除”)之后的文本)上不能正常工作

    附言: 我这样做是因为我需要“(数字”)有不同的颜色,而且 <span> 在一个 <option> 无效。

    3 回复  |  直到 16 年前
        1
  •  2
  •   Chris Van Opstal    16 年前

    我不认为是正则表达式破坏了。在IE7中,以下各项工作正常:

    alert("(test".replace(/\(/g,"<span>("));
    

        2
  •  1
  •   David Hedlund    16 年前

    你是这么说的 span 在一个 option

    table 例如,IE将始终在内部推断 tbody ,即使代码中没有。以同样的方式,如果您注入 <span> </span> ,即可以自行插入一个。要解决此问题,请确保一次性注入完整的代码:

    $(this).html($(this).html().replace(/\((.*?)\)/g,"<span>($1)</span>"));
    
        3
  •  0
  •   jitter    16 年前

    我没有IE7,但在IE6中

    javascript:"<select><option>ABC (123)</option><option>XYZ (789)</option></select>".replace(/\(/g,"<strong>(")
    

    <select><option>ABC <strong>(123)</option><option>XYZ <strong>(789)</option></select>
    

    并正确显示(除此之外) <strong> 没有效果)。使用时也可以正常工作 <span> 而不是 <strong>