【问题标题】:Opera 10, jquery with regex replaceOpera 10,带有正则表达式替换的 jquery
【发布时间】:2009-12-10 12:50:13
【问题描述】:

我有一个 jquery 插件,它可以在所有浏览器上运行,除了 opera。 removeHighlight 函数被触发,但 html 没有改变。据我所知,IE、FF、Chrome 和 Safari 都能正常工作。

我的例子可以在这里找到: http://www.pritaeas.net/public/jquery/plugin-dev/

插件的网址是: http://www.pritaeas.net/public/jquery/plugin-dev/jquery.highlight.js

基本上,我只想删除具有特定类的所有 span 标签,保留文本原样。

谁能解释为什么 opera 的反应不同,并提供解决方案或变通方法?

谢谢。

【问题讨论】:

标签: jquery regex opera


【解决方案1】:

问题出在您的 removeHighlight 函数中,在正则表达式中。我不知道为什么,但你的正则表达式在形式上不起作用:

var source = new RegExp("<span class=.?" + options["cssClass"] + ".?>(.*?)</span>", "ig");

尤其是第一个.? 在这种情况下是有问题的。当您将其更改为.\" 时,您的正则表达式就可以很好地工作。您可以使用\" 形式,因为在正确格式的html 中,所有属性都应该用括号括起来,您也可以将它们添加到highlight 函数中:

var target = "<span class=\"" + options["cssClass"] + "\">%&</span>";

【讨论】:

  • 我试过了,但在 IE 中显然 jQuery 没有添加引号。所以我决定前后都没有/一个角色。为什么会.?有问题吗?
  • 我认为 \"? 可以解决问题。仍然。谁能告诉我为什么 .? 在这里无效?
  • 我认为这是一个错误,我已将其提交给 Opera,我们将看看他们会怎么说'
  • 感谢 MBO,找到了错误报告(据记录,它现在被跟踪为 CORE-26329)并将推动它进行修复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
相关资源
最近更新 更多