如何确定 ::before 是否应用于元素?

我有这个简单的 html 代码。我需要能够确定 ::before 是否应用于 .icon-player-flash


    <div id="TestSwitch">


        <i class="icon-player-html5"></i>


        <i class="icon-player-none"></i>


        <i class="icon-player-flash"></i>


    </div>

http://img4.mukewang.com/6171254400015d6102490074.jpg

我认为这会起作用,但它的长度总是返回 0。


var flashplayer = $(".icon-player-flash:before");

console.log("count: " + flashplayer.length);

我错过了什么?


月关宝盒
浏览 175回答 1
1回答

阿晨1998

使用getComputedStyle并检查 的值content。如果是,none则未定义伪元素:var elem = document.querySelector(".box");var c = window.getComputedStyle(elem,"before").getPropertyValue("content");console.log(c);var elem = document.querySelector(".alt");var c = window.getComputedStyle(elem,"before").getPropertyValue("content");console.log(c);.box:before {&nbsp; content:"I am defined"}<div class="box"></div><div class="alt"></div>此属性与 :before 和 :after 伪元素一起用于在文档中生成内容。值具有以下含义:没有任何不生成伪元素。参考如果您想计数,只需考虑一个过滤器:const elems = document.querySelectorAll('div');const divs = [...elems].filter(e => {&nbsp; &nbsp;var c = window.getComputedStyle(e,"before").getPropertyValue("content");&nbsp; return c != "none"});console.log(divs.length).box:before {&nbsp; content:"I am defined"}<div class="box"></div><div class="box alt"></div><div class="alt"></div><div ></div>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript