有一种简单直接的方法可以将自定义类添加到任何 jQuery UI 小部件 - 它是 classes option。
让我们以selectmenu jQuery 小部件为例。
HTML 部分是严格的:
<select name="speed" id="speed" class="my-happy-decorated-class">
<option>Slower</option>
<option>Slow</option>
<option selected="selected">Medium</option>
<option>Fast</option>
<option>Faster</option>
</select>
像往常一样,为了在加载文档后用可爱的 jQuery UI 装饰这个丑陋的默认东西,我们应用了适合小部件 jQuery UI 功能 selectmenu():
<script>
$(function() {
$("#speed").selectmenu();
} );
</script>
结果我们得到这样的结果:
<select name="speed" id="speed" style="display: none;" class="my-happy-decorated-class">
<option>Slower</option>
<option>Slow</option>
<option selected="selected">Medium</option>
<option>Fast</option>
<option>Faster</option>
</select>
<span tabindex="0" id="speed-button" role="combobox" aria-expanded="false" aria-autocomplete="list" aria-owns="speed-menu" aria-haspopup="true" class="ui-selectmenu-button ui-button ui-widget ui-selectmenu-button-closed ui-corner-all" aria-activedescendant="ui-id-3" aria-labelledby="ui-id-3" aria-disabled="false"><span class="ui-selectmenu-icon ui-icon ui-icon-triangle-1-s"></span><span class="ui-selectmenu-text">Medium</span></span>
<span class="ui-selectmenu-icon ui-icon ui-icon-triangle-1-s"></span>
<span class="ui-selectmenu-text">Medium</span>
<span tabindex="0" id="speed-button" role="combobox" aria-expanded="false" aria-autocomplete="list" aria-owns="speed-menu" aria-haspopup="true" class="ui-selectmenu-button ui-button ui-widget ui-selectmenu-button-closed ui-corner-all" aria-activedescendant="ui-id-3" aria-labelledby="ui-id-3" aria-disabled="false"><span class="ui-selectmenu-icon ui-icon ui-icon-triangle-1-s"></span><span class="ui-selectmenu-text">Medium</span></span>
如您所见,初始标签 <select ... class="my-happy-decorated-class"> 被隐藏了,并且对类 "my-happy-decorated-class" 应用任何样式都是无用的。
这就是 jQuery UI-option classes 来提供帮助的地方!只需使用相同的 selectmenu() 命令将该选项应用于小部件,您就会在结果代码中的某个位置获得该类:
<script>
$(function() {
$("#speed").selectmenu();
$("#speed").selectmenu({
classes: {
"ui-selectmenu-button-closed": "my-happy-decorated-class"
}
});
});
</script>
注意,“ui-selectmenu-button-closed”是默认类,jQuery UI 设置为用于显示小部件的 HTML 标记!您可以在浏览器中使用 F12 看到的任何小部件不同部分的默认类的名称。
生成的 HTML 代码将是:
<select name="speed" id="speed" style="display: none;" class="my-happy-decorated-class">
<option>Slower</option>
<option>Slow</option>
<option selected="selected">Medium</option>
<option>Fast</option>
<option>Faster</option>
</select>
<span tabindex="0" id="speed-button" role="combobox" aria-expanded="false" aria-autocomplete="list" aria-owns="speed-menu" aria-haspopup="true" class="ui-selectmenu-button ui-button ui-widget
ui-selectmenu-button-closed my-happy-decorated-class
ui-corner-all" aria-activedescendant="ui-id-3" aria-labelledby="ui-id-3" aria-disabled="false"><span class="ui-selectmenu-icon ui-icon ui-icon-triangle-1-s"></span><span class="ui-selectmenu-text">Medium</span></span>
<span class="ui-selectmenu-icon ui-icon ui-icon-triangle-1-s"></span>
<span class="ui-selectmenu-text">Medium</span>
<span tabindex="0" id="speed-button" role="combobox" aria-expanded="false" aria-autocomplete="list" aria-owns="speed-menu" aria-haspopup="true" class="ui-selectmenu-button ui-button ui-widget ui-selectmenu-button-closed ui-corner-all" aria-activedescendant="ui-id-3" aria-labelledby="ui-id-3" aria-disabled="false"><span class="ui-selectmenu-icon ui-icon ui-icon-triangle-1-s"></span><span class="ui-selectmenu-text">Medium</span></span>
如您所见,您的类 my-happy-decorated-class 已添加到小部件的主视觉结果 span 中,您可以对其应用样式。