Вам также может потребоваться переопределить UIViewController disablesAutomaticKeyboardDismissal, чтобы в некоторых случаях это работало. Это, возможно, должно быть сделано в UINavigationController, если он у вас есть.
Попробуйте вместо этого:
$.grep(allProductIDs, function(n) { return n == lastProductID; });
Предупреждение: grep возвращает массив.
Похоже, jQuery выполняет === вместо == с inArray .
Вот почему все ненавидят языки, которые не являются ТИПОВЫМИ. Я изначально установил значение lastProductIndex со значением, но это была строка (потому что я получил значение из объекта HttpResponse из возвращенного JSON. Поэтому, следовательно, я установил переменную в строку, потому что возвращенное значение JSON было строкой Когда я жестко закодировал число 6758 в $ .inArray, он работал нормально и привлек мое внимание.
Используете ли вы на своей странице какие-либо другие библиотеки JavaScript?
Если это так, то для сокращения $
может быть конфликт. Это может быть решено несколькими способами, одним из которых может быть упаковка кода в самоисполняющуюся анонимную функцию
(function($) {
var lastProductIndex = $.inArray(lastProductID, allProductIDs);
})(jQuery);
Это меня тоже сначала смутило, у меня была такая же проблема. Кажется, что jQuery.inArray () требует строки. Так что вы можете просто сделать:
var lastProductID = "6758";
В моем случае я пытался сделать:
var foo = date.getTime () / 1000;
Что всегда приводило к - 1 возвращается из $ .inArray ()
Но вы можете просто преобразовать его в строку:
var foo = String (date.getTime () / 1000);
Надеюсь, что это кому-то поможет :)
У меня вчера была такая же проблема ,,
var data=[2,4,6,8];
alert( $.inArray(4,data) ) // output 1 as expected
alert( $.inArray("4",data) ) // output -1 as expected
Обычно это происходит, когда вы получаете значение для проверки из элемента ввода или чего-то, что возвращает строку. Вам нужно выполнить parseInt (string, radix)
, чтобы преобразовать его в число ...