0

我正在寻找为颜色创建一个下拉列表,其中每种颜色都作为项目旁边的一个小方块。

有:

在此处输入图像描述

想要(大致):

在此处输入图像描述

这个版本(jsfiddle)适用于下拉项目本身,但我希望按钮也更新为旁边有彩色方块。

$.widget("custom.coloriconselectmenu", $.ui.selectmenu, {  
  _renderItem: function (ul, item) {  
    var li = $("<li>", {text: item.label});  
    var bgColorStyle = 'background-color:' + item.element.attr("data-color");  
    var fullStyle = "float: left; width: 21px; height: 19px; margin-right: 7px;" + bgColorStyle;  
    $("<div>", {style: fullStyle}).appendTo(li);  
    return li.appendTo(ul);  
  }
});  

$("#selectId").coloriconselectmenu({icons: {button: "custom-button"}});

有没有一种好方法可以修改值更新时的下拉按钮以包含下拉菜单中的颜色方块?

4

1 回答 1

2

如下修改您的代码,使其响应change事件:

$( "#selectId" ).coloriconselectmenu({ 
    icons: { button: "custom-button" }, 
    change: function(event, ui){ 
        var selectedColor = $(this).find("option:selected").attr("data-color");
        //alert(selectedColor);
        var hiddenSelectMenuBtn = "#" + $(this).attr("id")+"-button .ui-selectmenu-text"
        //alert($(hiddenSelectMenuBtn).text());

        var fullStyle = "float: left; width: 21px; height: 19px; margin-right: 7px; background-color:" + selectedColor;  
        $("<span>", {style: fullStyle}).prependTo($(hiddenSelectMenuBtn));  
}); 

您需要选择不容易通过函数或属性公开的“选择菜单文本”。

您可以在更新的 jsfiddle中看到这一点。

于 2015-04-09T03:34:04.130 回答