У меня раньше была похожая проблема (не выпадающие, но слишком много делений, влияющих на производительность). Для нас решение состояло в том, чтобы повторно использовать элементы div, когда они прокручивались за пределами экрана, поскольку у вас не будет большого количества элементов div, если у вас есть только те, которые отображаются в данный момент, плюс еще несколько для прокрутки вверх / вниз. Конечно, это было немного проще для нас, потому что он управлялся с помощью пульта дистанционного управления, который мог перемещать только один экран за раз и не должен был учитывать выбор случайных мест на полосе прокрутки, но это все еще может быть какой-то пользы для вас. Если приведенное выше объяснение недостаточно ясно, оно работает примерно так:
| [spare divs]
| -----------------
| [buffered divs for page-up]
| -----------------
| [divs currently on screen]
| -----------------
| [buffered divs for page-down]
| -----------------
| [spare divs]
| -----------------
Теперь, когда вы прокручиваете, вы заполняете все элементы div, находящиеся сейчас на странице, данными, которые вам нужны, затем сортируете буферы, оставляя все остальные элементы div пустыми. В вашем случае вместо того, чтобы изменять данные, вы можете переключаться между режимами включения и выключения.