JQuery: contains() работает в Firefox, но не Chrome/Safari

У меня есть функция ajax, которая получает некоторые значения на основе выбранного значения в раскрывающемся списке. Я пытаюсь включить/отключить некоторые поля на основе подстроки. Я нашел "contains" для работы в firefox, но тестирование в chrome и safari говорит мне, что объект "не имеет метода содержит"

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

Есть ли альтернатива, которая будет работать во всех браузерах?

Ответ 1

то, что вы используете, String.contains, а не jQuery.contains. это потому, что вы используете функцию на .attr return-value, которая является строкой, а не jQuery-Object.

использовать jQuery.contains() (который работает в кросс-браузере), вы можете сделать это вместо этого:

$d.contains('$var_2$')

но обратите внимание, что это не только поиск по указанному атрибуту, но и по всему элементу.

поэтому вы, скорее всего, захотите использовать String.indexOf() (который также работает в кросс-браузере):

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

Ответ 2

Вы можете использовать indexOf, он должен работать во всех браузерах.

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

Ответ 3

Вы можете использовать indexOf, а не содержать.