【问题标题】:Different results for same jQuery code in chrome and Firefoxchrome 和 Firefox 中相同 jQuery 代码的不同结果
【发布时间】:2013-09-03 13:25:38
【问题描述】:

我不知道问题出在哪里。以下代码在 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 对我来说不是一个选项,任何人都知道转义正则表达式可能有什么问题吗?

【问题讨论】:

  • 那是什么不工作,你能提供错误吗?
  • JSFiddle 是您制作工作演示的朋友。
  • 你为什么要转义空间?
  • $(serviceOptions).filter('optgroup[label="' + cat + '"]'); (注意双引号)没有正则表达式对我来说很好。
  • 我为非法字符转义,在这个具体的例子中没有,但我想尽可能保持代码完整。

标签: javascript jquery google-chrome firefox


【解决方案1】:

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

Not working old version of jQuery including migrate 1.9.1JSFIDDLE

Working new version of jQuery 1.10.1JSFIDDLE

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    相关资源
    最近更新 更多