- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试以编程方式设置某些 select2 选项的背景颜色的样式。由于某种原因,它似乎不起作用。我根本没有看到背景颜色是红色的。实际上,我想要做的是为 select2 呈现为 li 的内容设置背景颜色,并且是 formatText()
函数中 span 标记的父项。
你在这里看到的那些选项是黄色的,我希望整行而不只是文本是黄色的。
我还想为“家庭”下拉列表中的各个行设置样式,以与它们在“产品”下拉列表中的着色方式相对应。
我有两段代码我认为应该这样做。这是 fiddle - https://jsfiddle.net/jamiebrs/8axy7123/
const productsConfig = {
width: "100%",
theme: 'bootstrap4',
placeholder: "Select item",
allowClear: true,
templateSelection: formatText,
templateResult: formatText,
data: dataitems2,
escapeMarkup: function(m) {
return m;
}
};
function formatText (icon) {
if(icon.badge == undefined){
return $('<span>' + icon.text + '</span>');
} else {
return $('<span><span class="badge" style"background-color:red">'+ icon.badge.length + '</span> ' + icon.text + '</span>');
}
};
和....
$('#products').select2(
Object.assign({},
productsConfig,
{data: null}
)
);
$('#fam').on('change', function() {
// get selected value from the #fam select2
const selected = $(this).val();
// get the new products config (products config + data options)
const newProductsConfig = Object.assign({},
productsConfig,
{data: productOptions[selected]}
);
// destroy the existing products select2 and re-initialize
$('#products').empty().select2('destroy').select2(newProductsConfig);
$('#products').val(null).trigger('change')
});
最佳答案
我正在添加另一个答案,因为我认为我的第一个答案对于您最初的问题是可行的并且解决了您遇到的错误,并且这个答案可以满足您的实际需求。您的主要问题是您想更改选项的背景颜色,但下拉容器是在打开时动态生成的。这使得更改样式变得棘手。但是,您可以稍微破解 theme
select2 配置中的选项。通常,当您设置 theme
选项它将将该字符串添加到以 select2-container--
为前缀的下拉列表类中.例如,如果您设置此配置:
$('#example').select2({theme: 'bootstrap4'});
然后无论何时打开下拉菜单,主 select2 容器都会有类 select2-container--bootstrap4
.它只是附加您为 theme
设置的任何内容至 select2-container--
,这意味着我们可以像这样在配置中添加我们自己的类:
$('#example').select2({theme: 'bootstrap4 my-custom-class'});
然后无论何时打开下拉菜单,主 select2 容器都会有类 select2-container--bootstrap4
以及类my-custom-class
.
知道了这一点,您就可以为您的列表项预先创建任何您想要的样式:
#select2-fam-results li:nth-child(1),
.select2-container.bg-red li {
background-color: red;
}
#select2-fam-results li:nth-child(2),
.select2-container.bg-yellow li {
background-color: yellow;
}
编辑注意:
请注意我是如何为您的家庭列表元素添加匹配样式的,例如 #select2-fam-results li:nth-child(1)
和 #select2-fam-results li:nth-child(2)
.因为你给了一个id
的 fam
关于您的家人 <select>
元素,动态生成的 <ul>
list 总会有 id 对应的 id select2-fam-results
.你在这里必须小心一点,因为你正在对 nth-child
进行硬编码。索引,但如果您可以合理确定 Family 选项的顺序将如何显示,那么您可以安全地执行此操作。
结束编辑注释
现在您需要做的就是在 Family
时动态更新您的主题被选中。让我们修改productOptions
以便它包含您的数据和您想要的主题:
const productOptions = {
dataitems1: {data: dataitems1, theme: 'bg-red'},
dataitems2: {data: dataitems2, theme: 'bg-yellow'},
};
现在在您的 #fam
中更改事件,您所要做的就是将该主题添加到您现有的主题中:
$('#fam').on('change', function() {
/* ... */
const options = productOptions[selected];
// get the new products config (products config + data options + theme)
const newProductsConfig = Object.assign({}, productsConfig, {
data: options.data,
theme: `${productsConfig.theme} ${options.theme}`,
});
/* ... */
});
这使您可以根据选择的系列灵活地更改产品的背景颜色。
注意:在您的 productsConfig
中然后您还必须更改定义 data: dataitems2
至 data: dataitems2.data
或完全删除该行,因为它实际上并未被使用。
关于javascript - Select2 样式属性未拾取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64558860/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!