jQuery:contains()适用于Firefox,但不适用于Chrome/Safari

jQuery:contains()适用于Firefox,但不适用于Chrome/Safari,jquery,contains,Jquery,Contains,我有一个ajax函数,它根据下拉列表中选定的值获取一些值。我正在尝试基于子字符串启用/禁用某些字段。我发现“contains”可以在firefox中使用,但在chrome和safari中的测试告诉我该对象“没有方法contains” if ($d.attr("embed").contains('$var_2$')) { //do something } else { // do something else } 是否有一种替代contains的方法可以在所有浏览器中使用?您可

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

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

是否有一种替代contains的方法可以在所有浏览器中使用?

您可以使用而不是contains。

如果您可以使用
索引,它应该可以在所有浏览器中使用

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

你用的是,不是。这是因为您正在使用
.attr
s返回值上的函数,它是字符串,而不是jQuery对象

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

$d.contains('$var_2$')
但请注意,这将不仅搜索指定的属性,而是搜索整个元素

因此,您最想做的是使用(wich也适用于跨浏览器):


谢谢你的详细解释,这很有效!我看到indexOf建议作为一种替代方案,并尝试了它,但我的语法肯定是错误的,因为我没有得到预期的结果。使用给定的语法可以完美地工作。再次感谢。只是对这个答案的更新:出于ES 6和兼容性原因,Mozilla开发人员决定在Firefox 48中将该方法重命名为
includes
$d.attr("embed").indexOf('$var_2$') != -1