jQuery:如何选择所有具有:before或:after的伪元素
jQuery: how to select all elements that are pseudo-elements having :before or :after?
在jQuery或基本javascript中可以获得所有带有:after或:before伪元素的元素?
我知道getcomputedstyle,但它返回所有带有或不带有:before或:after伪元素的元素。
感谢
编辑:
类似于:
$("a:before").each(function () {
console.log("element with :before pseudo-element")
});
没有。生成的内容元素实际上并不是DOM的一部分。你不能使用JS直接钩住它们。它们仅供演示。
您可以对可能是伪元素的父元素或兄弟元素等的实际元素执行操作,并以这种方式更改它们。
看看下面链接到的BoltClocks问题,也许你可以为所有伪元素设置一个公共属性,然后尝试根据这个属性使用jquery来选择它们。
给想要选择类(如"has before")的"a"标记,并以这种方式挂接它们?
这是可能的,但要全面解决!
查看此演示:http://jsfiddle.net/BE47z/1/
逻辑如下:
- 枚举CSS中具有
:before
或:after
定义的所有类-这是通过遍历document.styleSheets
对象来完成的(您可以根据需要更改代码以仅捕获:before
或:after
等) - 获得类列表后,删除CSS中名称后的部分,例如:
.a:before
变为.a
- 现在,您可以获得与这些类匹配的所有元素
代码
HTML
<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 defined
相关文章:
- 无法覆盖CSS伪元素:before
- jQuery:如何选择所有具有:before或:after的伪元素
- 选择一个 CSS 选择器来动态设置元素的样式 ::before
- 如何在jquery中使用.before时对元素进行动画处理
- .before插入多个元素
- 使用 JavaScript 自动获取 ::before 元素的信息
- 如何使用 javascript 使用 ::before 选择器为元素设置高度
- 如何通过Javascript更改伪:before元素的内容值
- 如何删除使用before()方法添加的元素
- 有没有任何方法可以重置元素的CSS规则:after/:before
- 一种通过程序在元素及其元素之间传递不相关属性的方法:before
- CSS伪元素上的事件侦听器,例如::after和::before
- Jquery/JS-如何切换元素的:after,:before
- CSS或jQuery以访问元素的父级:before
- css伪元素的替代解决方案:IE6/7的before
- 检测元素的更改并将其设置回before
- 定义一个类's .click - Before元素有这个类
- 动态地对:before元素应用样式
- 基于php变量更改:before元素的背景颜色
- jQuery slideToggle()不显示:before元素