Добавить «активный» класс на панель PanelSnap

Я использую https://panelsnap.com. Мне нужно добавить класс active на текущую панель.

Я заставил плагин работать с некоторыми пользовательскими параметрами, но я не могу заставить работать обратные вызовы. Думаю, мне следует использовать функцию addClass() для обратного вызова snapStart, но я могу делать что-то не так. Вот такой должна быть структура:

on([string] eventName, [function] callbackFunction(panel))

Это мой рабочий код без добавления класса

document.addEventListener("DOMContentLoaded", function() {
  var options = {
    container: document.body,
    panelSelector: '.snapp',
    directionThreshold: 100,
    delay: 0,
    duration: 300,
  };

  new PanelSnap(options);
});    

[РЕДАКТИРОВАТЬ]

Ваш код работает, но не с $(this), вместо этого, если я добавлю селектор класса, он будет применяться ко всем элементам. Есть ли способ сделать это, например, с помощью each?

Мой новый код

document.addEventListener("DOMContentLoaded", function() {
  var options = {
    container: document.body,
    panelSelector: '.snapp',
    directionThreshold: 100,
    delay: 0,
    duration: 300,
  };

  var psInstance = new PanelSnap(options);
  psInstance.on('snapStart', function() {
    $('.snapp').removeClass('active'); // remove the class from all other panels
  }); 
    psInstance.on('snapStop', function() {
    $('.snapp').addClass('active'); // add the class to the current panel.
  }); 
});
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
0
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из документации вам нужно подключиться к событию snapStart в экземпляре PanelSnap(), который вы создаете, чтобы добавить класс. Попробуй это:

document.addEventListener("DOMContentLoaded", function() {
  var options = {
    container: document.body,
    panelSelector: '.snapp',
    directionThreshold: 100,
    delay: 0,
    duration: 300,
  };

  var psInstance = new PanelSnap(options);
  psInstance.on('snapStart', function(panel) {
    $('.snapp').removeClass('active'); // remove the class from all other panels
    $(panel).addClass('active'); // add the class to the current panel.
  }); 
});

Спасибо @rory-mccrossan Обратный вызов работает отлично, но все еще есть некоторые проблемы. Я снова отредактировал свой вопрос.

Juárez 26.06.2019 12:16

Извините, я неправильно прочитал документацию. Хотя обратный вызов выполняется в рамках активной панели, но вместо этого он передается как параметр. Я обновил ответ для вас

Rory McCrossan 26.06.2019 12:20

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