【问题标题】:jQuery: contains() works in Firefox but not Chrome/SafarijQuery: contains() 适用于 Firefox 但不适用于 Chrome/Safari
【发布时间】:2013-06-30 17:30:31
【问题描述】:

我有一个 ajax 函数,它可以根据下拉列表中的选定值获取一些值。我正在尝试基于子字符串启用/禁用某些字段。我发现 'contains' 可以在 Firefox 中工作,但在 chrome 和 safari 中的测试告诉我该对象'没有方法包含'

if ($d.attr("embed").contains('$var_2$')) { 
    //do something
} else {
    // do something else
}

是否有替代包含可在所有浏览器中使用的替代方法?

【问题讨论】:

    标签: jquery contains


    【解决方案1】:

    您使用的是String.contains,而不是jQuery.contains。这是因为您在.attrs 返回值上使用该函数,它是一个字符串,而不是一个 jQuery 对象。

    要使用jQuery.contains()(可以跨浏览器使用),您可以这样做:

    $d.contains('$var_2$')
    

    但请注意,这不仅会搜索指定的属性,还会搜索整个元素。

    所以你最可能想做的是使用String.indexOf()(也可以跨浏览器使用):

    $d.attr("embed").indexOf('$var_2$') != -1
    

    【讨论】:

    • 感谢您的详尽解释,这很有效!我已经看到 indexOf 建议作为替代方案并尝试过,但我的语法一定是关闭的,因为我没有得到想要的结果。与您给定的语法完美配合。再次感谢。
    • 只是对此答案的更新:出于 ES 6 和兼容性原因,Mozilla 开发人员决定在 Firefox 48 中将该方法重命名为 includes
    【解决方案2】:

    您可以使用indexOf,它应该适用于所有浏览器。

    if ($d.attr("embed").indexOf('$var_2$') > -1) { 
        //do something
    } else {
        // do something else
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用 indexOf 代替 contains。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-25
        • 1970-01-01
        • 2011-08-21
        • 2015-06-06
        • 1970-01-01
        相关资源
        最近更新 更多