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, на котором была полоса прокрутки.

Другие вопросы по тегам