jquery - Select2 jQuery - 如何在 Select2 下拉列表中选择特定元素以更改任意 css 属性?
问题描述
基本上,当满足某些条件时,我只需要在下拉列表中更改一个项目的颜色,这样它就可以在视觉上与其他项目不同。
我找不到任何特定的选择元素的方法,因为每当我重新加载页面时元素的 id 总是会改变,但是有一个已知的开始和结束。例如,这是 id 之一:
id="select2-id_category-result-8ejj-25"
第一个固定部分是select2-id_category-result-
和第二个固定部分是-25
,之间变化。列表中的其他项目具有不同的中间部分并以它们的 ID 结尾。
如果我这样构造选择器:
$('li[id^="select2-id_category-result"][id$="-25"]');
它永远不会找到任何元素。构造这种选择器的正确方法是什么?
解决方案
您可以使用select2-results__options
class 并.find()
更改所需的 li 标签颜色。此外,您只能li
在选项框打开时更改标签的颜色,否则它将不起作用,因为select2
当您单击选择元素时会生成该元素,并且默认情况下它们不存在于 dom 中。
演示代码:
$(function() {
$(".select2").select2({
"width": "100px"
});
var save_Reference = "";
//wheen sleect is clicked
$(document).on("click", ".select2", function() {
//for further use if need id
save_Reference = $(".select2-results__options").find("li[id$=-2]").attr("id")
console.log(save_Reference)
//or use it like this change 2 to 25
$(".select2-results__options").find("li[id$=-2]").css("color", "red")
})
})
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.min.css" />
<script src="https://code.jquery.com/jquery-3.2.1.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.full.min.js"></script>
<select class="select2">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
推荐阅读
- python - 到达数据框中的每个单元格
- asp.net-mvc - 如何在数据源读取方法后更新(重新加载)剑道网格的列?
- firebase - Firebase orderBy 不起作用(当 orderBy 字段相同时)
- java - 询问非原始数组列表
- python - 张量流中的可训练参数是什么?
- c# - 如何使用 ImageSharp(Web) 压缩/变异带有图像的流(IFormFile)
- c++ - 如何在 C++17 中检查名称是别名还是引用?
- c++ - 使用 std::enable_if 的正确方法
- google-chrome - chrome 桌面 PWA 启动失败并关闭
- java - 房间:警告:从不使用参数/从不使用变量