jQuery ui selectmenu полоса прокрутки не работает
Я использую jQuery плагин selectmenu. Я инициализировал select с помощью
$('select').selectmenu({width:100, maxHeight:300, style: 'dropdown'});
У меня есть много вариантов, и это приводит к появлению полосы прокрутки браузера по умолчанию, но я не могу ее использовать. Если я нажму и попытаюсь перетащить эту панель, selectmenu закроется. Я могу прокручивать колесиком мыши. В 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", пока кто-то не даст решение для этой ошибки. Таким образом, selectmenu не будет закрыт при нажатии из него, но он будет закрыт при выборе любой опции...
EDIT:
хорошо, теперь он работает. Измените раздел, показанный ранее этим один:
$( 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 не будет закрыт при перемещении полосы прокрутки.
вы можете установить максимальную высоту для содержимого selectmenu, когда он открывается в CSS, а затем он представит полосу прокрутки в списке элементов, которые могут быть использованы.
ul.ui-menu { max-height: 420px !important; }
возможно, Вам потребуется дополнительно ограничить это изменение стиля в CSS, если вы используете другие виджеты jQuery UI, которые включают элемент
- с назначенным классом 'ui-menu'.
решение приведено для примера "выбрать число" из демо-страница JQueryUI:
$('select').selectmenu().selectmenu("menuWidget").css("height","200px");
Если вы хотите задать максимальную высоту для каждого элемента по ID. Использовать:
#select1-menu { max-height: 150px !important; }
#select2-menu { max-height: 200px !important; }
например, идентификатор вашего selectmenu - "select" use:
#select-menu { max-height: 150px !important; }