Это не работает, потому что вы неправильно интерпретируете возвращаемое значение $ .inArray (). Функция возвращает -1 , когда цель поиска не может быть найдена, и индекс в массиве, когда это возможно. Таким образом, когда он возвращает 0 , это означает, что нашел то, что искал код.
Милый трюк & mdash; для тех, кто любит милые трюки & mdash; для проверки возвращаемого значения из функций типа "$ .inArray ()" необходимо применить оператор "~":
if (~$.inArray(needle, haystack)) {
// found it
}
else {
// did not find it
}
Оператор "~" формирует побитовое дополнение (или "дополнение 1") своего аргумента. Поскольку «~ -1» равно 0, а «n» не равно нулю для любого другого целого числа, оно эффективно соответствующим образом преобразует возвращаемое значение в значение «истина / ложь». Не используйте его, если вам не нравятся милые трюки: -)
Кроме того, переменная "dmy", используемая в паре функций, должна быть объявлена в каждой с ключевым словом var
.