问题
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
回答1:
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);
},
});
回答2:
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 theui-selectmenu-button-closed
class when closed, theui-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, theui-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.
来源:https://stackoverflow.com/questions/41570175/how-set-individual-styles-css-for-option-in-selectmenu-jquery-ui-selectmenu