在我的JavaScript中,我有这个jQuery
$("#report_config_modal_13 :disabled:required")
在chrome和firefox中,此方法工作正常,但在IE11上却显示错误
Syntax error, unrecognized expression: unsupported pseudo: required
是什么原因造成的?是否有另一种方法可以完成在IE11中可以执行的相同操作?我将jquery 2.2.3更新为3.3.1之后,似乎才出现此问题。
答案 0 :(得分:1)
您只需按照示例代码下方的方式更改选择器即可。
它支持IE和其他浏览器。
jQuery(document).ready(function($) {
$("input[required]:disabled").each(function(index, el) {
$(this).addClass('class1')
});
$("input[disabled]").each(function(index, el) {
$(this).addClass('class2')
});
$("input[required]:not(:disabled)").each(function(index, el) {
$(this).addClass('class3')
});
});
.class1 {
background: red;
}
.class2 {
background: blue;
}
.class1.class2 {
background: yellow;
color: red;
}
.class3 {
background: green;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="#">
<input placeholder="textbox" type="text" disabled="" required="">
<input placeholder="textbox" type="text" disabled="" >
<input placeholder="textbox" type="text" required="">
<input placeholder="textbox" type="text" >
</form>
-谢谢-
答案 1 :(得分:0)
众所周知,id属性在文档中必须是唯一的。因此,您可以通过id selector(使用特定ID)获得特殊元素,然后检查属性值。像这样:
if ($("#input1").attr("disabled") == "disabled") {
$("#input1").addClass("class1");
}
和
<input placeholder="textbox" class="input" id="input1" type="text" disabled="" required="">
如果要选择多个元素,可以使用class selector or element selector,如下所示:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(function(){
$(".input[required]:disabled").each(function (index, el) {
$(this).addClass('class1')
});
$(".input[disabled='']").each(function (index, el) {
$(this).addClass('class2')
});
$(".input:not([disabled])").each(function (index, el) {
$(this).addClass('class3')
});
});
</script>
<form action="#">
<input placeholder="textbox" class="input" id="input1" type="text" disabled="" required="">
<input placeholder="textbox" class="input" type="text" disabled="">
<input placeholder="textbox" class="input" type="text" required="">
<input placeholder="textbox" class="input" type="text">
</form>