Изменить тему всплывающей подсказки Tippy JS, используя JavaScript

У моей страницы темная и светлая тема.

Я хочу переключаться между темами всплывающих подсказок при переключении цветовых тем.

Я создаю 2 быстрые темы, одна называется темная, а другая светлая.

Я попытался изменить атрибут HTML и класс всплывающей подсказки, надеясь вызвать изменение в темах, но это не работает.

Это мой JS:

      if ($('#dn').is(":checked")) {
        $('.color-mode').addClass("light-mode");
        $('.color-mode').removeClass("dark-mode");
        $('.tiptool').attr('data-tippy-theme','light');
        $('.tippy-tooltip').addClass("light-theme");
        $('.tippy-tooltip').removeClass("dark-theme");
      } else {
        $('.color-mode').removeClass("light-mode");
        $('.color-mode').addClass("dark-mode");
        $('.tiptool').attr('data-tippy-theme','dark');
        $('.tippy-tooltip').addClass("dark-theme");
        $('.tippy-tooltip').removeClass("light-theme");
      }
    });

Любая идея, почему это не работает и как я могу это исправить?

1 ответ

Вам нужно использовать set() метод на экземпляре Tippy, обновление атрибутов data-tippy-* не будет работать. Вы можете получить доступ к экземпляру любого элемента из его _tippy имущество:

var theme = $('#dn').is(":checked") ? "light" : "dark";

$('.tiptool').each(function (index, el) {
  if (el._tippy) {
    el._tippy.set({ theme: theme });
  }
})
Другие вопросы по тегам