Я сделал скрипку здесь .У меня есть проект bootstrap 4
, использующий последние версии bootstrap-select , perfect-scrollbar , jquery
.
На странице с 4 selectpicker
элементы, Perfect Scrollbar
не работает в раскрывающихся списках, хотя ошибок нет.Я думаю, это связано с тем, как я инициализирую каждый экземпляр bootstrap select
для каждого selectipicker
на странице.
Мой код
$(document).ready(function() {
// Init PerfectScrollbar + SelectPicker
if ($('.dropdown-menu.inner').length != 0) {
const spps = [];
// For each instance of SelectPicker
$('.dropdown-menu.inner').each(function(i) {
// Get closest boostrap-select dropdown and add data-sp-id="i" so we know which is selected later
$(this).attr('data-sppsid', i);
// Using the SelectPicker array, initialize each picker scrollbar
spps[i] = new PerfectScrollbar(this, {
minScrollbarLength: 40
});
});
// When a SelectPicker is opened
$('body').on('shown.bs.dropdown', function(e) {
e.stopImmediatePropagation();
// Get the picker sppsid
var i = $(e.target).find('.dropdown-menu.inner').data('sppsid');
console.log(spps[i]);
// Update the picker in the array
spps[i].update();
});
}
$('.ps-scrollbar-y').on('click', function(e) {
e.stopPropagation();
});
});
В console.log
я могувидим, что элемент это PerfectScrollbar и он содержит:
PerfectScrollbar {element: ul.dropdown-menu.inner.show.ps, settings: {…}, containerWidth: 0, containerHeight: 0, contentWidth: 0, …}
В inspect
я вижу классы ps__rail-x
, добавленные к элементам, но на показанном .update()
удаляет их.
Что я пропустил?Спасибо.