jQuery 属性选择器在 Internet Explorer 中不起作用

jQuery attribute selector not working in Internet Explorer

在我的 JavaScript 中,我使用 css 选择器 [style="display:none"] 代码在 Chrome、Firefox、Opera 和 Safari(在 Windows) 正如预期的那样。

然而,在 Internet Explorer(版本 11)中,不幸的是它运行错误。

用于测试:
只需单击 Chrome 中的按钮(例如 #visible_elements_count),然后单击 Internet Explorer 中的按钮。您将体验到不同的 return 值。

HTML:

<section>
    <ul>
        <li>visible Element</li>
        <li style="display:none">invisible Element</li>
        <li>visible Element</li>
    </ul>
</section>

<button id="all_elements_count">all elements</button>
<button id="visible_elements_count">visible elements</button>
<button id="invisible_elements_count">invisible elements</button>

<!-- JAVASCRIPTS -->
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script>
    $("#all_elements_count").click(function () {
        var counter = $("section ul li").length;
        alert(counter);
    });

    $("#visible_elements_count").click(function () {
        var counter = $("section ul li:not([style='display:none'])").length;
        alert(counter);
    });

    $("#invisible_elements_count").click(function () {
        var counter = $("section ul li[style='display:none']").length;
        alert(counter);
    });
</script>

来源: 我阅读了所有内容 about selectors!还是解决不了这个问题

感谢任何帮助!

你应该使用 jQuery :visible & :hidden 伪选择器:

var counter = $("section ul li:visible").length;

var counter = $("section ul li:hidden").length;

为了获得更好的性能,请参阅@Jai 的回答。

您应该使用 :hidden, :visible.filter():

    $("#all_elements_count").click(function () {
        var counter = $("section ul li").length;
        alert(counter);
    });

    $("#visible_elements_count").click(function () {
        var counter = $("section ul li").filter(':visible').length;
        alert(counter);
    });

    $("#invisible_elements_count").click(function () {
        var counter = $("section ul li").filter(':hidden').length;
        alert(counter);
    });