Как лучше всего определить, возвращает ли jQuery-селектор пустой объект? Если вы делаете:
alert($('#notAnElement'));
вы получаете [объект объекта], поэтому способ, которым я делаю это сейчас:
alert($('#notAnElement').get(0));
который напишет "undefined", и поэтому вы можете проверить это. Но это выглядит очень плохо. Какой еще путь есть?
jquery
jquery-selectors
peirix
источник
источник
this
гораздо полезнее, чемtrue
. Смотрите мой ответ, портирующийpresence
метод Rails .this
переменной, я бы рекомендовал изменить инструкцию return на то, что имеет CSharp .источник
Селектор возвращает массив объектов jQuery. Если подходящих элементов не найдено, возвращается пустой массив. Вы можете проверить
.length
коллекцию, возвращаемую селектором, или проверить, является ли первый элемент массива неопределенным.Вы можете использовать любые следующие примеры внутри оператора IF, и все они дают одинаковый результат. True, если селектор нашел соответствующий элемент, иначе false.
источник
.length
если код не горячий. Это, безусловно, наиболее ясно с намерением. Кроме того,.size()
является устаревшим и был в течение многих лет (с 1,8). Я просто собираюсь отредактировать ваш ответ и удалить его, не стесняйтесь добавлять его обратно с примечанием, но оно настолько старое, что, думаю, его уже нет.Мне нравится делать что-то вроде этого:
Итак, вы можете сделать что-то вроде этого:
http://jsfiddle.net/vhbSG/
источник
TypeError: firstExistingElement.doSomething is not a function
. Вы можете обернуть всю переменную присваивания / теста в if () и делать что-то только в том случае, если элемент найден ....Мне нравится использовать
presence
, вдохновленный Ruby on Rails :Ваш пример становится:
Я считаю, что это лучше предложенного,
$.fn.exists
потому что вы все еще можете использовать логические операторы илиif
, но правдивый результат более полезен. Другой пример:источник
Мои предпочтения, и я понятия не имею, почему это не в jQuery:
Используется так:
Или, как это выглядит в CoffeeScript:
источник
Это в документации JQuery:
http://learn.jquery.com/using-jquery-core/faq/how-do-i-test-whether-an-element-exists/
источник
Вы можете делать это все время по умолчанию. Я изо всех сил пытался обернуть функцию jquery или метод jquery.fn.init, чтобы сделать это без ошибок, но вы можете сделать простое изменение в источнике jquery, чтобы сделать это. Включены некоторые окружающие линии, которые вы можете искать. Я рекомендую поискать источник jquery для
The jQuery object is actually just the init constructor 'enhanced'
И последнее, но не менее важное: вы можете получить несжатый исходный код jquery здесь: http://code.jquery.com/
источник