我有很多选择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元素。如果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");
}
});
但它不起作用。如何解决?
答案 0 :(得分:1)
<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>
试试这个......
答案 1 :(得分:1)
简单的答案是您不能将粗体样式应用于false
元素。它不起作用。
到目前为止提供的所有解决方案&#34;工作&#34;以某种方式,他们将特定的类添加到所需的元素,但它不会显示任何可见的结果/更改。因为浏览器(我确信铬)不允许这样做。
然而,您可以执行的option
(但不是确切的)是使用另一个名为closest
的标记,这会使您的文字加粗。
你可以这样做
optgroup
这是the fiddle。
答案 2 :(得分:1)
试试这个,它应该有用
$(document).ready(function () {
$("select.prefCodes").css("background","none");
$(".prefCodes option[value=]").addClass("bolder");
});
避免使用!important
。它是not recommended,因为它可能会在其他地方引入新的错误
答案 3 :(得分:0)
.hasClass(className)
将返回true
。看起来你要做的就是过滤掉那个类名。在这种情况下,您只需将其添加到选择器,您的代码就会变为:
$(document).ready(function () {
$("select.prefCodes").css("background","none");
$("select.prefCodes option[value=]").addClass("bolder");
});
另请注意,我已从"important"
调用中删除了.css
参数。通过jQuery将!important
添加到css是not as simple as it would seem。
您还可以将代码压缩成链,这样您就不必两次执行相同的DOM查找:
$(document).ready(function () {
$("select.prefCodes").css("background","none")
.find("option[value=]")
.addClass("bolder");
});