JQuery UI SelectMenu полоса прокрутки не работает

Я использую плагин jquery selectmenu. Я инициализировал выбор с

$('select').selectmenu({width:100, maxHeight:300, style: 'dropdown'});

У меня есть много вариантов, и это приводит к появлению полосы прокрутки браузера по умолчанию, но я не могу использовать ее. Если я нажимаю и пытаюсь перетащить эту панель, меню выбора закрывается. Я могу прокрутить колесиком мыши. Там может быть некоторый конфликт в CSS и различных плагинов. Но я не уверен, с чего начать.

Есть идеи, что может быть причиной этой проблемы?

4 ответа

Решение

Кажется, проблема в этом разделе файла js:

// document click closes menu
$( document ).bind( "mousedown.selectmenu-" + this.ids[ 0 ], function( event ) {
    //check if open and if the clicket targes parent is the same
    if ( self.isOpen && !$( event.target ).closest( "#" + self.ids[ 1 ] ).length ) {
        self.close( event );
    }
});

Полоса прокрутки соглашается с условием в предложении "if", поэтому selectmenu закрывается...

Вы можете комментировать строку внутри предложения "if", пока кто-нибудь не решит эту ошибку. Таким образом, меню выбора не будет закрыто при нажатии на него, но оно будет закрыто при выборе любого параметра...

РЕДАКТИРОВАТЬ:

Хорошо, сейчас работает. Измените секцию, показанную ранее этим:

$( document ).bind( "mousedown.selectmenu-" + this.ids[ 0 ], function( event ) {
    //check if open and if the clicket targes parent is the same
    if ( self.isOpen && !$( event.target ).closest( "#" + self.ids[ 1 ] ).length && !$(event.target).hasClass('ui-selectmenu-menu-dropdown')) {
        self.close( event );
    }
});

Таким образом, поскольку полоса прокрутки является частью div с классом "ui-selectmenu-menu-dropdown"... selectmenu не будет закрываться при перемещении полосы прокрутки.

Вы можете установить максимальную высоту для содержимого меню выбора при его открытии в CSS, а затем оно представит полосу прокрутки в списке элементов, которые можно использовать.

ul.ui-menu { max-height: 420px !important; }

Возможно, вам понадобится еще больше ограничить это изменение стиля в своем CSS, если вы используете другие виджеты jQuery UI, которые включают элемент

    с назначенным классом 'ui-menu'.

Решение приведено для примера "выберите номер" демонстрационной страницы JQueryUI:

$('select').selectmenu().selectmenu("menuWidget").css("height","200px");
<!--JQUERY-->
$('.custom-combobox-toggle').on('click',function (e) {
      e.preventDefault();
      $('.ui-menu').addClass('custom-scroll');
});

<!--CSS-->
.ui-widget.ui-widget-content.custom-scroll {
    max-height: 300px;
    overflow: auto;
    display: block;
}

Если вы хотите установить максимальную высоту для каждого элемента по идентификатору. Использование:

#select1-menu { max-height: 150px !important; }
#select2-menu { max-height: 200px !important; }

Например, ваш идентификатор selectmenu - это "select" use:

#select-menu { max-height: 150px !important; }
Другие вопросы по тегам