javascript - chrome 和 Firefox 中相同 jQuery 代码的不同结果

标签 javascript jquery google-chrome firefox

我不知道问题出在哪里。以下代码在 Chrome (v29) 中运行良好,但在 firefox (v23) 中运行不佳:

// some test data
var serviceOptions = '<optgroup label="Domiciliary Care"><option value="1">Meals</option><option value="2">Personal Hygiene</option></optgroup><optgroup label="Live in Care"><option value="3">Housekeeping and Cleaning</option><option value="4">Assisted Mobility</option></optgroup>';
var cat = "Live in Care";

// escape illegal characters
var escaped_cat = cat.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, "\\$1");

var options = $(serviceOptions).filter("optgroup[label='" + escaped_cat + "']").html();
var expectedOptions = '<option value="3">Housekeeping and Cleaning</option><option value="4">Assisted Mobility</option>';
// OK in Chrome, ERROR in FF
console.log(options == expectedOptions ? "OK" : "ERROR")

// passing the string directly instead of using a var works on FF
options = $(serviceOptions).filter("optgroup[label='Live\ in\ Care']").html();
console.log(options == expectedOptions ? "OK" : "ERROR")

如您所见,目标很简单:通过特定的 optgroup 过滤一组选项。 您可以通过打开 jQuery 网站、打开控制台并复制粘贴代码来测试它。 同时,如果我发现了什么,我会更新这篇文章。

更新 感谢您的反馈: 看来问题出在使用 jQuery 1.9.1 的 firefox 上转义非法字符。升级 jQuery 或不转义字符都会在 Firefox 下产生预期的结果。

由于升级 jQuery 对我来说不是一个选项,所以任何人都知道转义正则表达式可能有什么问题?

最佳答案

似乎是旧版本 jQuery 的问题,但不是新版本。尝试将您的 jQuery 更新到 1.10

不支持旧版本的 jQuery,包括 migrate 1.9.1 JSFIDDLE

使用新版本的 jQuery 1.10.1 JSFIDDLE

顺便说一下,jQuery 主站点运行的是旧版本的 jQuery

关于javascript - chrome 和 Firefox 中相同 jQuery 代码的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18593550/

相关文章:

javascript - 如何检查同位素是否已初始化?

jquery - 防止表单验证 CSS .error 突出显示文本框

javascript - Wordpress jQuery - 选中复选框时添加类,取消选中时删除

javascript - 日语字符在 Google Chrome 中显示为其他符号

javascript - Chrome : window. 打开打开新标签而不是新弹出窗口

javascript - 使用全屏 API 触发全屏时,双指缩放在 macOS (Chrome) 上不起作用

javascript - waitForImages 插件 - 不等待

javascript - 在 Javascript 中扩展对象

javascript - 多个最高分的返回索引

javascript - 单击密码字段外部时如何更改密码可见性