在jQuery或中,所有元素都可以使用:after或:?
我知道getcomputedstyle,但是它返回带或不带的所有元素:前元素或伪元素之后。
谢谢
编辑:
类似于:
$("a:before").each(function () {
console.log("element with :before pseudo-element")
}); 发布于 2012-07-16 11:28:30
不是的。生成的内容元素实际上不是DOM的一部分。您不能使用JS直接连接到它们。它们仅供演示使用。
您可以对伪元素的父母或兄弟姐妹等实际元素进行处理,并以这种方式对它们进行更改。
看看下面链接到的问题BoltClock,也许您可以为所有伪元素设置一个公共属性,然后根据这个属性尝试使用jquery选择它们。
发布于 2012-07-16 11:56:08
给'a‘标签,你想要选择一个类,如’有-之前‘,并与他们挂钩的方式?
发布于 2012-07-16 15:56:29
这是可能的,但以一种周全的方式!
查看此演示:http://jsfiddle.net/BE47z/1/
逻辑是这样的:
:before或:after定义的类--这是通过遍历document.styleSheets对象来完成的(您可以将代码更改为只捕获: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>CSS
.classWithoutBefore {
}
.class2WithoutBefore {
}
.classWithBefore:before {
}
.class2WithBefore:before {
}
.a:before, .b:before {
}JS
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 definedhttps://stackoverflow.com/questions/11503184
复制相似问题