javascript - 如何确定 if::before 应用于元素?

标签 javascript jquery css

我有这个简单的 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>

enter image description here

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

var flashplayer = $(".icon-player-flash:before");
console.log("count: " + flashplayer.length);

我错过了什么?

最佳答案

使用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 {
  content:"I am defined"
}
<div class="box"></div>

<div class="alt"></div>

This property is used with the :before and :after pseudo-elements to generate content in a document. Values have the following meanings:

none

The pseudo-element is not generated. ref

如果你想简单地考虑一个过滤器:

const elems = document.querySelectorAll('div');
const divs = [...elems].filter(e => {
   var c = window.getComputedStyle(e,"before").getPropertyValue("content");
  return c != "none"
});

console.log(divs.length)
.box:before {
  content:"I am defined"
}
<div class="box"></div>
<div class="box alt"></div>

<div class="alt"></div>
<div ></div>

关于javascript - 如何确定 if::before 应用于元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58001666/

相关文章:

html - 为什么我的列表项在列中中断?

html - 即使使用 Web 字体加载器,如何避免 Flash of Unstyled Text (FOUT)?

javascript - 无法拖动动态添加的DIV

javascript - 如何使用 jQuery 从某些(多个)类中获取所有元素?

javascript - React组件继承使用父方法和子方法

javascript - 在哪里可以找到 JS 文档中有关语法的一些信息?

Javascript JQuery 属性范围

jquery - 如何使谷歌地图中的标记图像闪烁

javascript - 如何缩短这段代码?

javascript - 滚动后修复导航栏