仅限Safari中的jQuery无法识别的表达式

时间:2017-03-31 11:52:38

标签: jquery

我有以下代码仅在Safari中导致无法识别的表达式错误。 OSX和iOS版本的Safari都会出现此错误,但在任何其他浏览器中都不会发生此错误。

控制台说: -

Error: Syntax error, unrecognized expression: li[data-page-step="1"

匹配此选择器的HTMl代码是: -

    <li style=""
      data-page-step="1"
      data-page-label-previous="< Back"
      data-page-label-next="Next"
      data-page-label-number-text="{page} / {total}"
      data-page-disabled="false"
      data-page-hidden="false"
      data-page-fid="f21"

    >

这个选择器表达式失败的JS代码如下所示,我认为它必须是正确的,因为它适用于其他地方(其他浏览器)。

        v = function(b) {
        var c = {
                step: 1,
                fid: "",
                hidden: !1,
                labelPrevious: "Previous",
                labelNext: "Next",
                progressText: "",
                labelNumberText: "",
                disabled: !1
            },
            d = a('li[data-page-step="' + b + '"');
        if (!d.length) return c;
        for (var e in c) {
            var f = d.data("page" + u(e));
            c[e] = f ? f : ""
        }
        return c.$e = d, c
    }

为什么这只会在Safari上失败? [data-next-step ...]转义看起来是正确的 - 并且可能是其他浏览器标准的正确。

1 个答案:

答案 0 :(得分:2)

不应该只是Safari,因为这显然缺少]

d = a('li[data-page-step="' + b + '"]');
// here ----------------------------^

...但我不禁注意到这在Chrome v56和Firefox v51上运行得很好,所以显然它们更宽容:

console.log(document.querySelectorAll('div[data-foo="bar"').length);
<div data-foo="bar"></div>