jQuery仅在IE中“不支持的伪:必需”

时间:2019-05-20 06:08:39

标签: jquery internet-explorer

在我的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之后,似乎才出现此问题。

2 个答案:

答案 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>