Идентифицировать ссылку для уничтожения и повторной инициализации Swiper в Elementor

#scope #this #destroy #swiper #elementor

#область действия #это #уничтожить #swiper.js #elementor

Вопрос:

Elementor Pro (конструктор страниц WordPress) прекрасно интегрируется с Swiper, привязывая их графический интерфейс к параметрам JS и содержимому базы данных.

Однако для моего проекта мне нужно внести некоторые изменения в параметры инициализации оболочки Swiper «CoverFlow» (показать больше слайдов, изменить направление 3D-эффекта …).

Я надеюсь использовать метод Destroy Swiper API, который выглядит как:

 mySwiper.destroy(deleteInstance, cleanStyles);
  

Затем я могу снова инициализировать Swiper с моими собственными пользовательскими параметрами. Проблема в том, что способ, которым Elementor вызывает Swiper в frontend.js это сложная анонимная функция, которая на самом деле не позволяет мне узнать, что такое «mySwiper»… В строке 567:

 this.swipers.main = new Swiper(this.elements.$mainSwiper, this.getSwiperOptions());
  

Я был бы очень признателен, если бы кто-нибудь, пожалуйста, помог мне понять, что «this.swipers.main» будет переводиться после инициализации, чтобы я мог уничтожить swiper и инициализировать его снова с моими собственными параметрами.

Очевидно, я не могу редактировать frontend.js сам по себе, поскольку это файл плагина, который необходимо обновить.

Дополнительные баллы тому, кто научит меня ловить рыбу и какова методология решения подобных головоломок в других подобных ситуациях.

Ответ №1:

Вы можете присвоить идентификатор виджету Elementor, например: slider1 , а затем с помощью JS вы можете использовать:

 var sliderInstance = document.querySelector('#slider1 .swiper-container').swiper;
  

После этого вы можете вызывать sliderInstance.destroy() куда угодно.

И если вы хотите инициализировать ее снова, вы можете вызвать:

 var sliderInstance = new Swiper('#slider1 .swiper-container', {
    //options
});
  

Комментарии:

1. Бинго.. Вы разобрались с моим делом.