10

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

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

是否有替代包含适用于所有浏览器的替代方法?

4

3 回答 3

18

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

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

$d.contains('$var_2$')

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

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

$d.attr("embed").indexOf('$var_2$') != -1
于 2013-07-03T06:24:40.243 回答
3

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

if ($d.attr("embed").indexOf('$var_2$') > -1) { 
    //do something
} else {
    // do something else
}
于 2013-07-03T06:24:26.067 回答
0

您可以使用indexOf代替 contains。

于 2013-07-03T06:23:51.957 回答