У меня есть форма автозаполнения, в которой пользователь может ввести термин, и она скрывает все элементы <li>
, которые не содержат этот термин.
Первоначально я просмотрел все <li>
с помощью jQuery each
и применил .hide()
к тем, которые не содержали термин. Это было НАМНОГО слишком медленно.
Я обнаружил, что более быстрый способ — перебрать все <li>
и применить класс .hidden
ко всему, что нужно скрыть, а затем в конце цикла выполнить $('.hidden').hide()
. Хотя это кажется немного хакерским.
Потенциально более быстрым способом может быть переписывание правила CSS для класса .hidden
с использованием document.styleSheets
. Может ли кто-нибудь придумать еще лучший способ?
РЕДАКТИРОВАТЬ :Позвольте мне прояснить кое-что, о чем я не уверен, что слишком много людей знают. Если вы изменяете DOM в каждой итерации цикла, и это изменение приводит к перерисовке страницы,это будет НАМНОГО медленнее, чем «подготовка» всех ваших изменений и их применение сразу после завершения цикла.