如何在JQuery中获取所有select元素
How to get all select element in JQuery
我有许多2种类型的选择。类型A是我的自定义选择,类型B是浏览器中的默认选择,但具有自定义背景。
我的CSS:
select {
background: #fff url('down-arrow.png') no-repeat center right !important;
-moz-appearance: none;
text-indent: 1px;
text-overflow: '';
}
A类:
<select class="positionAbsolute prefCodes" size="4">
<option value>Select Preferred Code</option>
<option value="1063473072">display 1 (NPI: 1063473072)</option>
<option value="1104875822">display 2 (NPI: 1104875822)</option>
</select>
类型B:
<select class="formfield">
<option value="select">Select</option>
<option value="Male">Male</option>
<option value="Female">Female</option><option value="N/A">N/A</option>
</select>
当页面加载时,我想使用jQuery加载所有选择元素。如果select有类prefCodes,我想设置它的背景为none。并且这个选项中没有值<option value>Select Preferred Code</option>
将添加bolder
类。这是我的代码:
$(document).ready(function () {
if ($("select").hasClass("prefCodes")){
$(this).css("background","none","important");
$(".prefCodes option[value=]").addClass("bolder");
}
});
但这行不通。如何解决?
<select class="positionAbsolute prefCodes" size="4">
<option value=''>Select Preferred Code</option>
<option value="1063473072">display 1 (NPI: 1063473072)</option>
<option value="1104875822">display 2 (NPI: 1104875822)</option>
</select>
<script>
$(document).ready(function () {
if ($("select").hasClass("prefCodes")){
$(this).css("background","none","important");
if($(".prefCodes option[value='']")) {
$(this).addClass("bolder");
}
}
});
</script>
试试这个。。。
简单的答案是不能将粗体样式应用于option
元素。它不会起作用。
到目前为止,提供的所有解决方案都以这样一种方式"工作",即向所需元素添加特定的类,但不会显示任何可见的结果/更改。因为浏览器(我确信chrome(不允许这样做。
然而,你可以做的closest
(但不确切(的事情是使用另一个名为optgroup
的标签,这将使你的文本加粗。
你可以像一样
<select class="positionAbsolute prefCodes" size="4">
<optgroup label="Select Preferred Code">
<option value="1063473072">display 1 (NPI: 1063473072)</option>
<option value="1104875822">display 2 (NPI: 1104875822)</option>
</optgroup>
</select>
这是小提琴。
试试这个,它应该可以
$(document).ready(function () {
$("select.prefCodes").css("background","none");
$(".prefCodes option[value=]").addClass("bolder");
});
避免使用!important
。不建议这样做,因为它可能会在其他地方引入新的错误
.hasClass(className)
将返回true
,如果集合中的任何元素都具有该类。似乎您所要做的只是过滤该类名。在这种情况下,您只需将其添加到选择器中,您的代码就会变成:
$(document).ready(function () {
$("select.prefCodes").css("background","none");
$("select.prefCodes option[value=]").addClass("bolder");
});
还要注意,我从.css
调用中删除了"important"
参数。通过jQuery将!important
添加到css并不像看上去那么简单。
您还可以将代码压缩成一个链,这样您就不必两次执行相同的DOM查找:
$(document).ready(function () {
$("select.prefCodes").css("background","none")
.find("option[value=]")
.addClass("bolder");
});
相关文章:
- 如何在PHP中使用$_POST获取Select元素值
- X秒后刷新select元素
- 在select元素中显示highchart dashstyle(svg)
- 在IE9中使用jQuery.change定位select元素
- 使用Dalekjs测试工具,如何在Dropdown中选择Option(select元素)当没有“;值“;Option标记
- 如果选择了当前年份,则在Select元素中仅显示当前和未来月份
- 使用jquery验证函数不适用于select元素
- AngularJS:根据其他对象预先选择ng repeat中的select元素
- 减小select元素中的下拉宽度
- 我可以't从通过Ajax创建的select元素中设置值或获取值
- this.defaultValue 返回 select 元素的未定义
- 使用挖空.js如何刷新 Select 元素中的可观察数组
- 用于逐步增强的“select”元素的JavaScript中的事件处理程序
- 正在从开发人员工具中的select元素打印选项列表
- 丢失对jQuery存储的select元素的引用
- jQuery如何动态添加select元素和重置select
- 使用纯JavaScript获取事件的select元素值
- 在更改时,如果没有使用jquery更改,也可以删除对select元素的关注
- 为Select元素选择ONCHANGE
- 用Javascript将焦点设置在select元素上会将第一个项目滚动到视图之外