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

Javascript chrome和Firefox中相同jQuery代码的不同结果,javascript,jquery,google-chrome,firefox,Javascript,Jquery,Google Chrome,Firefox,我想不出是什么问题。以下代码在Chrome(v29)上运行良好,但在firefox(v23)上不起作用: //一些测试数据 var服务选项='MealsPersonal HygieneHouseheceping and CleaningAssisted Mobility'; var cat=“生活照料”; //转义非法字符 var转义\u cat=cat.replace(/([#&,.+*~\':“!^$[\]()=>\124;\/@])/g,“\\$1”); var options=$(ser

我想不出是什么问题。以下代码在Chrome(v29)上运行良好,但在firefox(v23)上不起作用:

//一些测试数据
var服务选项='MealsPersonal HygieneHouseheceping and CleaningAssisted Mobility';
var cat=“生活照料”;
//转义非法字符
var转义\u cat=cat.replace(/([#&,.+*~\':“!^$[\]()=>\124;\/@])/g,“\\$1”);
var options=$(serviceOptions.filter(“optgroup[label='”+escaped_cat+'])html();
var expectedOptions=‘内务管理和清洁辅助移动’;
//Chrome中的OK,FF中的错误
log(选项==预期选项?“确定”:“错误”)
//直接传递字符串而不是使用var在FF上工作
options=$(serviceOptions.filter(“optgroup[label='Live\in\Care']”)html();
log(选项==预期选项?“确定”:“错误”)
正如您所看到的,目标很简单:按特定的optgroup筛选一组选项。 您可以通过打开jQuery网站、打开控制台并复制粘贴代码来测试它。 同时,如果我发现了什么,我会更新这篇文章

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


因为升级jQuery不是我的选择,所以有人知道escape regex会有什么问题吗?

对于较旧版本的jQuery来说似乎是个问题,但对于较新版本来说不是。请尝试将jQuery更新到1.10

无法使用jQuery的旧版本,包括migrate
1.9.1

正在使用jQuery的新版本
1.10.1


jQuery主站点正在运行较旧版本的jQuery顺便说一句,

较旧版本的jQuery似乎有问题,但较新版本的jQuery没有问题。请尝试将jQuery更新到1.10

无法使用jQuery的旧版本,包括migrate
1.9.1

正在使用jQuery的新版本
1.10.1


顺便说一句,jQuery主站点运行的是一个较旧版本的jQuery,所以什么不起作用,你能提供错误吗?是你制作工作演示的朋友。你为什么要转义空格?$(serviceOptions)。filter('optgroup[label=“”+cat+”);(注意双引号)没有正则表达式对我来说很好。我可以转义非法字符,在这个特定的示例中没有,但是我希望代码尽可能完整。那么什么不起作用,你能提供错误吗?你是制作工作演示的朋友。你为什么转义空格?$(serviceOptions)。filter('optgroup[label=“”+cat+”);(注意双引号)在没有正则表达式的情况下可以很好地工作。我为非法字符转义,在这个特定示例中没有,但我希望尽可能保持代码的完整性。
// 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")