jQuery niceScroll не работает на Dynamic DIV
Я боролся с этой проблемой в течение нескольких недель, и я исследовал десятки постов на этом сайте и других. У меня есть очень основная проблема. У меня есть тег DIV #scrollarea
который создается на лету, уничтожается и воссоздается на лету несколько раз в одном веб-приложении. Моя проблема в том, что функция niceScroll работает только ОДИН РАЗ. После второй попытки я больше не получаю контроль
Я пробовал несколько методов, включая resize()
метод, и ничего не работает. Я также установил регулятор, который гарантирует, что он устанавливается только один раз, а затем resize()
После этого. Опять ничего не работает.
Это очень сложно продемонстрировать здесь, учитывая, что мой код заблокирован за безопасными дверями, и он запускается через скрипты.
У кого-нибудь есть предложение, как это можно сделать? Для просмотра:
- загрузка страниц, нет
#scrollarea
настоящее - сценарий срабатывает, а
#scrollarea
установлен вDIV
niceScroll
прикреплен к#scrollarea
ОДНАЖДЫ и работает ОТЛИЧНО- сценарий снова срабатывает,
#scrollarea
заменен на новую скролларею - независимо от того, какую технику я использую, полосы прокрутки больше не работают
Методы попытки:
- устанавливать
niceScroll
каждый раз новый#scrollarea
прибывает - устанавливать
niceScroll
ОДНАЖДЫ и никогда больше - устанавливать
niceScroll
ОДИН РАЗ, а затем выдатьgetNiceScroll().resize()
- Попытка
.mouseover()
->.resize()
техника
Все приемы не позволяют визуализировать полосу прокрутки при втором использовании.
3 ответа
ОБНОВЛЕНИЕ: новая функция найдена!
var setScroll = function(i) {
if($(i).length>0)
$(i).niceScroll().updateScrollBar();
}
Вызовите эту функцию, чтобы обновить niceScroll
setScroll(".classWithNiceScroll");
-----Старый метод-----
используйте это вместо изменения размера
$("idORclass").getNiceScroll().remove()
$("idORclass").nicescroll();
скрипт запускается снова, #scrollarea заменяется на NEW scrollarea
Что ты имеешь в виду? твой #scrollarea
удален из DOM, а новый вставлен? или вы заменили его содержимое, как $('#scrollarea').html( blabla )
?
Ты пытался $(window).trigger('resize')
? Кажется, что nicescroll следит за событиями изменения размера, но не за изменениями DOM.
У меня была похожая проблема с использованием пустого элемента div, к которому я мог добавить динамическое содержимое, когда определенные события были вызваны, однако при добавлении содержимого полоса прокрутки не появлялась. Я заставил это работать, предварительно заполнив div полосы прокрутки другим пустым div с высотой, которая превысила div, на котором была полоса прокрутки.