Відповіді:
Перевірте питання про jQuery ...
Ви можете використовувати властивість довжини колекції jQuery, повернуту вашим селектором:
if ( $('#myDiv').length ){}
lenght
замість length
; це помилка написання.
.length
.
(Оскільки я, здається, не маю достатньої репутації, щоб проголосувати відповідь ...)
Вовк написав:
Виклик властивості довжини на невизначеному або нульовому об'єкті призведе до виходу з ладу браузерів IE та webkit!
Натомість спробуйте це:
// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") !== null){ // do something }
або
// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") === null){ // don't do something }
Хоча це правда, що виклик властивості довжини на невизначеному або нульовому об'єкті призведе до відмови браузерів, результат селекторів jQuery ($ ('...')) ніколи не буде нульовим або невизначеним. Таким чином, пропозиції щодо коду не мають сенсу. Використовуйте одну з інших відповідей, вони мають більше сенсу.
(Оновлення 2012 р.) Оскільки люди дивляться на код і ця відповідь є досить високою у списку: Останні пару років я використовую цей невеликий плагін:
jQuery.fn['any'] = function() {
return (this.length > 0);
};
Я думаю, що $ ('div'). Any () читає краще ніж $ ('div'). Length , плюс ви не будете страждати стільки від помилок: $ ('div'). Ayn () дасть помилку під час виконання , $ ('div'). довжина мовчки, швидше за все, завжди буде хибною.
__
Зміни листопада 2012 року:
1) Оскільки люди схильні дивитись на код, а не читати те, що сказано навколо коду, я додав дві великі зауваження лектора до цитованого коду Вовка.
2) Я додав код маленького плагіна, який використовую для цієї ситуації.
Функція пошуку повертає масив відповідних елементів. Ви можете перевірити, чи довжина дорівнює нулю. Зверніть увагу на зміну, щоб шукати елементи лише один раз і повторно використовувати результати за необхідності.
var elem = $("#btext" + i);
if (elem.length != 0) {
elem.text("Branch " + i);
}
Також ви спробували просто скористатися текстовою функцією - якщо жодного елемента не існує, він нічого не зробить.
$("#btext" + i).text("Branch " + i);
Функція jquery $ () завжди повертає ненуле значення - середні елементи, які відповідають вам селектору cretaria. Якщо елемент не знайдено, він поверне порожній масив. Тож ваш код буде виглядати приблизно так -
if ($("#btext" + i).length){
//alert($("#btext" + i).text());
$("#btext" + i).text("Branch " + i);
}
У jQuery 1.4 ви отримуєте функцію $ .isEmptyObject, але якщо ви змушені використовувати старішу версію jQ, як ми, бідні розробники Drupal, просто крадуть використовувати цей код:
// This is a function similar to the jQuery 1.4 $.isEmptyObject.
function isObjectEmpty(obj) {
for ( var name in obj ) {
return false;
}
return true;
}
Використовуйте його так:
console.log(isObjectEmpty(the_object)); // Returns true or false.
if ( $('#whatever')[0] ) {...}
Об'єкт jQuery, який повертається всіма нативними методами jQuery, НЕ є масивом, це об'єкт з багатьма властивостями; одна з них є властивістю "довжини". Ви також можете перевірити розмір () або отримати (0) або get () - "get (0)" працює так само, як і доступ до першого елемента, тобто $ (elem) [0]
Що з використанням "undefined"?
if (value != undefined){ // do stuff }
використовувати $("#selector").get(0)
для перевірки з таким нулем. get повертає елемент dom, до цього часу ви не маєте справу з масивом, де вам потрібно перевірити властивість length. Особисто мені не подобається перевірка довжини на нульову обробку, це мене чомусь бентежить :)
Використовуючи властивість довжини, ви можете це зробити.
jQuery.fn.exists = function(){return ($(this).length < 0);}
if ($(selector).exists()) {
//do somthing
}