jQuery:如何选择所有伪元素的元素:before或:after?

时间:2012-07-16 11:20:45

标签: javascript jquery html css pseudo-element

在jQuery或基本的javascript中可以获取所有元素:after或:之前的伪元素?

我知道getcomputedstyle,但是这会返回所有元素,包括或不使用:before或:after伪元素。

由于

修改

类似的东西:

$("a:before").each(function () {
  console.log("element with :before pseudo-element")
}); 

3 个答案:

答案 0 :(得分:1)

不。生成的内容元素实际上不是DOM的一部分。你不能使用JS直接挂钩它们。它们仅供演示。

你可以对可能是伪元素的父母或兄弟姐妹等的实际元素进行处理,并以这种方式进行更改。

查看下面链接的BoltClock问题,也许你可以为所有伪元素设置一个公共属性,然后根据这个属性尝试用jquery选择它们。

答案 1 :(得分:0)

给你想要选择'has-before'之类的'a'标签并以这种方式挂钩?

答案 2 :(得分:0)

这是可能的,但是以一种圆润的方式!

查看此演示:http://jsfiddle.net/BE47z/1/

逻辑如下:

  1. 枚举CSS中具有:before:after定义的所有类 - 这是通过遍历document.styleSheets对象来完成的(您可以将代码更改为仅捕获{ {1}}或:before等......根据需要
  2. 获得班级列表后,请删除以下部分:其名称在CSS中,例如::after变为.a:before
  3. 现在您可以获得与这些类匹配的所有元素
  4. <强>代码

    <强> HTML

    .a

    <强> CSS

    <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 {
    
    }