Как стиль JQuery выбран, выберите поле

7

Я использую jQuery для моего multi-select. Тем не менее, я нахожу, что стили, предварительно определенные в файле chosen.css, трудно переписать, что полностью избавляется от chosen.css также не может быть очень хорошим вариантом.

Вот моя скрипка: https://jsfiddle.net/k1Lr0342/

HTML:

<select class="chosen" multiple="true" style="height: 34px; width: 280px">
  <option>Choose...</option>
  <option>jQuery</option>
  <option selected="selected">MooTools</option>
  <option>Prototype</option>
  <option selected="selected">Dojo Toolkit</option>
</select>

css:

.chosen-choices {
    border-radius: 3px;
    box-shadow: inset 0px 1px 2px rgba(0,0,0,0.3);
    border: none;
    height: 34px !important;
    cursor: text;
    margin-top: 12px;
    padding-left: 15px;
    border-bottom: 1px solid #ddd;
    width: 285px;
    text-indent: 0;
    margin-left: 30px;
  }

Я попытался напрямую написать css для .chosen-choices ul. Некоторые из них работают как border-radius и box-shadow. Но другие: margin, height, padding, border и т.д. Перезаписываются файлом chosen.css. Один из вариантов - поставить !important для каждой настройки, которая не работает. Это будет работать для большинства вещей, но все же не высота. Есть предположения?

  • 0
    Я думаю, что вы должны включить свой новый CSS ниже выбранного. CSS решит вашу проблему. Вы пробовали это?
  • 0
    @ketan Я попробовал это. Кажется, это не работает
Теги:
jquery-chosen

4 ответа

5
Лучший ответ

CSS примет стиль, который использует более определенный селектор.

.chosen-container-multi .chosen-choices {
    /*blah blah*/
}

.chosen-choices {
    /* less specificity, this style might not work  */
}

Рабочая скрипка

  • 1
    Вы можете повысить специфичность, просто повторяя селектор класса, например так: .chosen-choices.chosen-choices
1

Попробуйте использовать jQuery, здесь работает JSFIDDLE

$(".chosen-choices li").css("background","red");
0

Немного поздно, но я подумал, что буду отвечать, так как я столкнулся с этим. Поскольку выбранные элементы, которые вы видите, основаны на выбранном меню, которое он скрывает, вы должны найти элемент в div сразу после него (созданный выбранным) и стилизовать его. Вы можете сделать это с помощью Jquery, предполагая, что вы знаете его значение.

$('.your-select-menu').next().find('.search-choice').each(function() {
  if ($(this).text() === someValue) {
    $(this).css("border-color", "#00b300");
  }
}) 

Результаты в этом
Изображение 136911

0

Если вы посмотрите на .chosen-choices в selected.css, вы увидите, что высота auto!important. Удалите (или комментируйте) те !important, и это должно быть хорошо.

Вы можете использовать инспектор элементов браузера, чтобы проверить применяемый css. Я лично использую инструменты разработчика Chrome каждый раз. Спасите меня много хлопот

  • 1
    Дело в том, что я не хочу изменять selected.css

Ещё вопросы

Сообщество Overcoder
Наверх
Меню