我正在玩 Kendo UI Web 并寻找根据特定需求自定义它的方法。从我的JS bin中,我简单地添加了带有示例列表项的 Kendo UI 下拉控件,它们的背景需要用各自的颜色呈现。
我花了一些时间检查元素以改变其样式,但尚未找到控制每个列表项的解决方案。有没有人有这方面的经验?
有一个容易的部分和一个困难的部分。简单的是获得背景,困难的是让它看起来不错。
很简单,定义一个模板来渲染每个列表项:
<script id="template" type="text/kendo-tmpl">
<div style="background-color: #= text #;">#= text #</div>
</script>
然后将您的 ComboBox 定义为:
$(document).ready(function () {
$('#combobox').kendoComboBox({
template : $("#template").html()
});
});
但这可能不像你想要的那样好,因为在<div>
我的模板之前有一个<li>
由 KendoUI 引入,除非你想开始使用它,否则你可能会考虑只显示一个带有项目颜色的颜色方块。
您可以执行以下操作:
开始为颜色方块定义 CSS:
.ob-patch {
margin: 4px 6px 0 0 !important;
height: 14px;
width: 14px;
float: left;
border: 1px solid black;
}
那么每个项目的模板将是:
<script id="template" type="text/kendo-tmpl">
<div>
<div style="background-color: #= text #;" class="ob-patch"> </div>
#= text #
</div>
</script>
和组合框初始化:
$('#combobox').kendoComboBox({
template: $("#template").html()
});
您的 JS Bin在此处使用此方法进行了修改
编辑:如果您希望输入的背景获得所选项目的颜色,您应该使用:
function setColor() {
var val = this.value();
this.input.css("background-color", val);
}
$("#combobox").kendoComboBox({
template : $("#template").html(),
dataBound: setColor,
change : setColor
});
事件处理程序从所选选项change
设置值,事件处理程序为初始值设置。input
dataBound