nepster-web
@nepster-web

Как организовать стили для разных selectmenu?

Использую jQuery UI: jqueryui.com/selectmenu

На странице нужно в разных местах использовать селекты разных стилей. У меня есть класс .primary (синий) и .orange (оранжевый).

Пример реализации:
jsbin.com/kujesotoge/1/edit?html,output

Как видно зи примера все работает кроме стилей при нажатии. Тоесть у меня не получается применить стили исходя из primary и orange к выпадающему списку.

Все дело в том, что jquery ui генерирует div внизу страницы для каждого селекта и показывает его при нажатии.

Эти стили можно оформить вот так:

.ui-state-focus.ui-corner-top {
  border: solid 1px @color-style-primary-border;
  .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));
}

.ui-widget-content {
  border: 1px solid @color-brand-primary-border;
  background: @color-brand-primary;
  color: #ffffff;
}

.ui-state-hover,
.ui-widget-content .ui-state-hover,
.ui-widget-header .ui-state-hover,
.ui-state-focus,
.ui-widget-content .ui-state-focus,
.ui-widget-header .ui-state-focus {
  color: #ffffff;
  font-weight: 400;
}


Но это будет общее оформление для всех, а вот как их оформить исходя из класса primary или orange ?
  • Вопрос задан
  • 709 просмотров
Решения вопроса 1
У каждого из списков, которые показываются при клике по селекту есть свой уникальный идентификатор вот по ним и можете прописывать стили:
#ui-id-1-menu
#ui-id-2-menu
Либо если вам необходим именно класс добавить, то вы можете сделать так:
$(document).ready(function () {
 var selects = $('select'), ln = selects.length;

   for(var i = 0; i < ln; i++) {
     var loc = $(selects[i]), tmenu ;
     loc.selectmenu();
     tmenu = '#' + loc .attr('id') + '-menu';
     var style = loc.data('style');
     $(tmenu).parent().addClass(style);
   } 
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы