Zhihar
Zhihar

Reputation: 1428

how set individual styles (css) for option in selectmenu (jquery-ui: selectmenu)

I have a html form:select

<select id = 'myselect'>
<option value = '1'>1</option>
<option value = '2'>2</option>
...
<option value = 'N'>N</option>
</select>

for a beautiful drawing I use jquery-ui

$('#myselect').selectmenu();

I need to box 1 had its own style

how to do it? set the id, class does not work :(

I think that i should do the following:

1) create html code of 'classic' select form

2) join created 'classic' select form to jquery-ui

3) find element in jquery-ui selectmenu (HOW?)

4) set to found element new class-name

5) use css for class-name

Upvotes: 1

Views: 5423

Answers (2)

Zhihar
Zhihar

Reputation: 1428

Twisty, big thanks for idea's direction

decision:

$.widget( "ui.selectmenu", $.ui.selectmenu, {
    _my_render: function( item ) {          
        return $("<div" + ((item.element[0].attributes.my_level == undefined) ? ("") : (" class = '_my_class'")) + ">" + item.label + "</div>");
    },

    _renderItem: function( ul, item ) {

        return $( "<li>" )
            .append(this._my_render(item))
            .appendTo(ul);
    },
});

Upvotes: 1

Twisty
Twisty

Reputation: 30893

This is discussed in the API: http://api.jqueryui.com/selectmenu/ under Theming.

The selectmenu widget uses the jQuery UI CSS framework to style its look and feel. If selectmenu specific styling is needed, the following CSS class names can be used for overrides or as keys for the classes option:

  • ui-selectmenu-button: The button-like element replacing the native selectmenu on the page. Has the ui-selectmenu-button-closed class when closed, the ui-selectmenu-button-open class when open.

    • ui-selectmenu-text: The span representing the text portion of the button element.
    • ui-selectmenu-icon: The icon within the selectmenu button.
  • ui-selectmenu-menu: The wrapper element around the menu used to display options to the user (not the menu itself). When the menu is open, the ui-selectmenu-open class is added.
    • ui-selectmenu-optgroup: One of the elements that replicates <optgroup> elements from native selects.

This example shows some of this: https://jqueryui.com/selectmenu/#custom_render

Using a more basic example, we can select and style unique items via CSS. The original select element is hidden. An Unorganized List, <ul> is created to use instead. We can select the first list item using a proper jQuery or CSS selector: #ui-id-1 or .ui-menu-item:first-child div.

You have not provided an example of what you have tried or what you are trying to accomplish. Here is a very basic example: https://jsfiddle.net/Twisty/vgm3txh6/

HTML

<label for="number">Select a number</label>
<select name="number" id="number">
  <option>1</option>
  <option selected="selected">2</option>
  <option>3</option>
  ...
  <option>19</option>
</select>

CSS

.ui-menu-item:first-child {
  font-weight: bold;
}

JavaScript

$(function() {
  $("#number")
    .selectmenu()
    .selectmenu("menuWidget")
    .addClass("overflow");
});

If you edit your post and add more details, I can supply a bit more info. I hope this helps you get to your solution.

Upvotes: 0

Related Questions