Самый быстрый способ скрыть тысячи элементов
  • ?
  • У меня есть форма автозаполнения, в которой пользователь может ввести термин, и она скрывает все элементы <li>, которые не содержат этот термин.

    Первоначально я просмотрел все <li>с помощью jQuery eachи применил .hide()к тем, которые не содержали термин. Это было НАМНОГО слишком медленно.

    Я обнаружил, что более быстрый способ — перебрать все <li>и применить класс .hiddenко всему, что нужно скрыть, а затем в конце цикла выполнить $('.hidden').hide(). Хотя это кажется немного хакерским.

    Потенциально более быстрым способом может быть переписывание правила CSS для класса .hiddenс использованием document.styleSheets. Может ли кто-нибудь придумать еще лучший способ?

    РЕДАКТИРОВАТЬ :Позвольте мне прояснить кое-что, о чем я не уверен, что слишком много людей знают. Если вы изменяете DOM в каждой итерации цикла, и это изменение приводит к перерисовке страницы,это будет НАМНОГО медленнее, чем «подготовка» всех ваших изменений и их применение сразу после завершения цикла.

    11
    задан Nick 12 August 2012 в 20:05
    поделиться