Javascript jQuery:如何选择所有伪元素:before或:after?
在jQuery或基本javascript中,可以使用:after或:before伪元素获取所有元素 我知道getcomputedstyle,但它返回所有元素,包括或不包括:before或:after伪元素 谢谢 编辑: 比如:Javascript jQuery:如何选择所有伪元素:before或:after?,javascript,jquery,html,css,pseudo-element,Javascript,Jquery,Html,Css,Pseudo Element,在jQuery或基本javascript中,可以使用:after或:before伪元素获取所有元素 我知道getcomputedstyle,但它返回所有元素,包括或不包括:before或:after伪元素 谢谢 编辑: 比如: $("a:before").each(function () { console.log("element with :before pseudo-element") }); 没有。生成的内容元素实际上不是DOM的一部分。你不能用JS直接连接到它们。它们仅用于演示
$("a:before").each(function () {
console.log("element with :before pseudo-element")
});
没有。生成的内容元素实际上不是DOM的一部分。你不能用JS直接连接到它们。它们仅用于演示 您可以对可能是伪元素的父元素或同级元素等的实际元素执行操作,并以这种方式更改它们
看看下面链接的问题,也许您可以为所有伪元素设置一个公共属性,然后尝试使用基于此属性的jquery来选择它们。给出您想要选择类(如“has before”)的“a”标记,并以这种方式连接它们?这是可能的,但要以一种迂回的方式 查看此演示: 逻辑是这样的:
:before
或:after
定义的所有类-这是通过遍历文档.样式表
对象来完成的(您可以根据需要将代码更改为仅捕获:before
或:after
等).a:before
变成.a
<div class="element classWithoutBefore">No :before</div>
<div class="element classWithBefore">Has :before</div>
<div class="element class2WithBefore">Has :before</div>
<div class="element class2WithoutBefore">No :before</div>
JS
.classWithoutBefore {
}
.class2WithoutBefore {
}
.classWithBefore:before {
}
.class2WithBefore:before {
}
.a:before, .b:before {
}
var sheets = document.styleSheets;
var pseudoClasses = [], i = 0, j = 0;
for (i=0; i<sheets.length; i++) {
try {
var rules = sheets[i].cssRules;
for (j=0; j<rules.length; j++) {
if(rules[j].selectorText.indexOf(':before') != -1 || rules[j].selectorText.indexOf(':after') != -1) {
pseudoClasses.push(rules[j].selectorText);
}
}
}
catch(ex) { // will throw security exception for style sheets loaded from external domains
}
}
var classes = [];
if(pseudoClasses.length > 0) {
pseudoClasses = pseudoClasses.join(',').split(','); // quick & dirty way to seperate individual class names
for (i=0; i<pseudoClasses.length; i++) { // remove all class names without a : in it
var colonPos = pseudoClasses[i].indexOf(':');
if(colonPos != -1) {
classes.push(pseudoClasses[i].substring(0, colonPos));
}
}
}
// Elements with the classes in the 'classes' array have a :before or :after defined
var sheets=document.styleSheets;
var伪类=[],i=0,j=0;
对于(i=0;i)一个元素有,比如说,一个“:after”伪类意味着什么?您正在寻找样式引擎附加了一些“:after”的那些元素吗内容?我怀疑这个列表对脚本引擎是可用的。这些是伪元素,而不是伪类。我只想处理在CSC中有:before伪元素的元素。请您解释一下,或者提供更多关于您试图做什么以及为什么要做的内容?好吧!我有五个没有:before style,三个有:before style。有jQu呃,我只会得到with:before样式?你知道我的意思吗?@refhat:(这似乎是一个不同的问题…:hover
是一个伪类,而不是与:before
或:after
相同的选择器,后者是伪元素。没有“伪”这样的东西。请不要将它们混淆。是的。该脚本用于盲目地在css定义中选择任何带有a:的内容,并使用它来匹配元素。所谓它只是一般地称为<代码>伪代码>(这是一种错误的方式)…但是的,我知道它们完全无关。上面的脚本应该编辑(特别是匹配部分的索引)由OP来满足他的需求,正如我指出的:)