4

鉴于以下 Kendo 下拉菜单,我想在 optionLabel 选择中添加一个类,因此当 ddl 展开时,我可以直观地区分什么是选项标签和什么是选项。理想情况下,这应该从dataBound并且显然必须从 js 完成。我正在寻找一个奇特的解决方案,我真的不想遍历大部分 DOM。

http://trykendoui.telerik.com/@vojtiik/uLEc

      $("#products").kendoDropDownList({
                    dataTextField: "ProductName",
                    dataValueField: "ProductID",
                    optionLabel: "select",
                    dataBound: function(e) {
                        // find the option label and add class
                    },
                    dataSource: {
                        transport: {
                            read: {
                                dataType: "jsonp",
                                url: "http://demos.telerik.com/kendo-ui/service/Products",
                            }
                        }
                    }
                });
4

4 回答 4

3

请尝试使用以下代码片段。

方法1:

<style type="text/css">
    #products_listbox li:first-child
    {
        background-color: Red !important;
        color: Yellow !important;
    }
</style>

注意: Products_list,在此 Products 中是您的下拉 ID。

方法2:

<script type="text/javascript">
    $(document).ready(function () {
        $("#products").kendoDropDownList({
                dataTextField: "ProductName",
                dataValueField: "ProductID",
                optionLabel: "select",
                open: function(e){
                        var listItem = $( "#products_listbox li:first-child" );
                        listItem.css( "background-color", "red" );
                        listItem.css( "color", "Yellow" );
                        },
                dataSource: {
                    transport: {
                        read: {
                            dataType: "jsonp",
                            url: "http://demos.telerik.com/kendo-ui/service/Products",
                        }
                    }
                }
            });
    });
</script>

完成此操作后,我将尝试创建更通用的解决方案。我会更新你。

注意:请使用method1以获得更好的页面性能。

于 2014-04-17T11:29:50.673 回答
2

您可以在更改事件中执行此操作.. 或者可能是任何其他方式.. 我认为这种方式很容易.. 您还可以找到选项标签而不是找到第一个孩子..

$(document).ready(function() {
                    $("#products").kendoDropDownList({
                        dataTextField: "ProductName",
                         dataValueField: "ProductID",
                        optionLabel: "select",
                        change: function(e){
                            var listItem = $( "#products_listbox li:first-child" );
                            listItem.css( "background-color", "red" ) ;
                          },
                        dataSource: {
                            transport: {
                                read: {
                                    dataType: "jsonp",
                                    url: "http://demos.telerik.com/kendo-ui/service/Products",
                                }
                            }
                        }
                    });
                });
于 2014-04-17T11:11:40.570 回答
1

您可以使用 open 事件从 UL 中查找第一个 LI 元素并修改其样式。

例如

  open: function(e) {
    this.list.find(">ul>li:first").css("background", "red")
  }

这里的例子。

于 2014-04-17T11:49:38.897 回答
1

正如这个问题所述:Kendo UI [kendoDropDownList] - onSelect optionLable, add CSS class

无需玩开放功能,您可以使用optionLabelTemplate来实现:

$("#selectBox").kendoDropDownList({
    ...
    optionLabel: "Select",
    optionLabelTemplate:'<span style="color:red">Select</span>',
    ...
});

将 style="color:red" 替换为 class="yourClassName" ;-)

于 2019-10-21T11:41:19.710 回答