СЛУЧАЯJQuery возвращает []
JQuery Retuns []
, когда нет никаких элементов совпавших по данным селекторов.
РЕЗУЛЬТАТ РЕЗЮМЕ
var a = $(""); // -> returns []
var b = $(); // -> returns []
var c = $(null); // -> returns []
var d = $("#abcd"); // -> returns [] there's no elements that have 'abcd' id attribute.
// FYI : Below results go same with 'b', 'c', 'd' as well.
typeof a // -> "object"
a instanceof jQuery // -> true
$.isEmptyObject(a) // -> false
if (a == null) // -> false
if (a == undefined)// -> false
// workaround to get to know 'a' is an empty, invalid jQuery object.
a.size() // -> 0 ... as Pebb said, this has been deprecated from version 1.8
a.length()
a[0] // -> undefined
Как я могу сделать предостережет?
Как вы можете видеть выше РЕЗУЛЬТАТ РЕЗЮМЕ, Там нет никакого способа, что гарантирует это безопасный объект JQuery кроме обходного я указал выше. Но .size()
предназначен для измерения количества объектов, содержащихся в объекте jquery, и object[index]
- для получения ojbect или значения от Array
или простого объекта от jQuery object
.
Ну, никто не будет обвинять меня в использовании обходного пути, но я чувствую, что что-то не хватает.
UPDATE SCENERIO
Я не хотела вам сказать, что returing []
не является безопасным и что-то не так с ним. Я забыл предложить вам такого рода scenerio, это было мое плохое в конце концов.
Предположим, что есть пользовательский ввод и пользователи типа id
значений для чего-то случившегося в своем браузере. Это может быть сделано, когда мы уже знаем, которые id
значения пользователи будут вводить. Код будет выглядеть, как показано ниже
// id variable is what user typed in a textbox
var target = $(id);
// Let's say we need the target's height, As Alfonso Garnett said this will return null
// Because there is no DOM elements to get its height value.
target.height();
Таким образом, мы, возможно, потребуется, чтобы подтвердить target
безопасно использовать height()
апи или нет. Вот почему возвращение []
не кажется безопасным при таких обстоятельствах. Это то, о чем я прошу.
ВТОРАЯ UPDATE
Хорошо, .height()
, даже из пустого объекта Jquery, возвратит нуль и никакой ошибки. Но после получения значения высоты мы можем предположить, что будет процесс вычисления.
var result = 12345 + target.height();
Если target.height()
возвращает null
, то результат будет 12345
, когда результат должен быть 12345 + n
. Если нет ошибки, можем ли мы легко узнать, где проблема в процессах расчета? хорошо, учитывая, что остальная часть кодов будет работать нормально без каких-либо перерывов, что является чистым преимуществом. Но мы узнаем только, что не так с расчетами, когда мы выяснили, target.height()
дает нам null
.
Никто, я думаю, не хочу, чтобы это произошло.Я просто хочу проверить, безопасен ли объект jquery для использования jQuery APIs
, и хочу убедиться, что он вернет некоторые полезные значения для моей программы.
Зачем вам нужна ваша память? Документы находятся здесь: http://api.jquery.com/jQuery/ –
Что нужно для защиты? Тот факт, что он возвращает пустое множество, является защитой. –
Он не возвращает массив, он возвращает пустую коллекцию jQuery. Возвращение «null» было бы ужасным противостоянием. – elclanrs