Вам нужно проверить, существует ли объект jQuery?

0

Скажем, у вас есть веб-сайт из 100 страниц, и есть div с идентификатором # unique-div, который появляется только на странице 5.html, но не на других 99 страницах, и для вас просто просто, с примером, который у вас есть JS файл, который загружается на все страницы и внутри него:

var uniqueDiv = $('#unique-div');

uniqueDiv.addClass('random-class');

имеет ли это какое-либо негативное влияние любым возможным способом (например, производительность)? Было бы лучше сначала проверить длину?

var uniqueDiv = $('#unique-div');
if ( uniqueDiv.length ) {
    uniqueDiv.addClass('random-class');
}

Если да, то почему?

Или, если вы цепляете объекты вроде этого:

var uniqueDiv = $('#unique-div');

someVar.add(moreVars).add(uniqueDiv).addClass('random-class');

Если объект не существует, что происходит?

Я пробовал это посмотреть, но я всегда задавался этим вопросом.

Теги:

2 ответа

3
Лучший ответ

Ответ любой метод jQuery лежит на "правильном" поведении, если в текущем объекте jQuery есть 0, 1 или более чем один объект DOM. Итак, до тех пор, пока вы не используете некоторые сломанные методы подключаемого модуля jQuery, вам не нужно проверять длину перед вызовом метода, и это включает ситуации, когда вы используете цепочку.

Таким образом, в вашем случае это было бы прекрасно, даже если вы и не подозревали, действительно ли существует #unique-div:

$('#unique-div').addClass('random-class');

Если div не существует, метод .addClass() просто ничего не сделает.

Обратите внимание: некоторые методы, которые извлекают значение, такое как .val(), кодируются только для работы с первым элементом DOM в объекте jQuery, и вам придется проверять с помощью отдельного метода, как то, что они закодированы для возврата, если есть нет объектов DOM в объекте jQuery. Например, .val() вернет undefined если в объекте jQuery нет объектов DOM.

0

Там может быть некоторое бесконечно малое количество сбережений, но это действительно незначительно. Вероятно, в вашем коде будет много раз, вы будете делать цикл через массив, подтверждая, что длина может быть равна нулю.

Объекты JQuery всегда имеют для них некоторый размер, и все методы, которые я знаю (т.е. AddClass), для пустых наборов, поэтому я не вижу никаких проблем с пропуском проверки длины.

  • 0
    Объяснения без фрагментов кода почти никогда не помогают - более того, я не рассматриваю это как ответ на вопрос вообще.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню