如何使用jQuery访问伪元素的样式属性?
就上下文而言,这是前面问题的后续。 我不想通过cssRules
挖掘,而是希望将逻辑基于search这些规则的效果的jQueryselect器。
给定的默认属性
.commentarea .author:before { background-image: url(http://...); background-position: -9999px -9999px; /* ... */ }
这是有select性地修改如
.author[href$="gbacon"]:before /* ... */ { content: ""; background-position: 0 -140px }
我怎样才能select各自的背景位置有默认值的伪元素? 在中复制select器
GM_log("size = " + $(".commentarea .author:before").size());
什么都不匹配 尝试.siblings()
与
$(".commentarea .author") .map(function(i) { GM_log($(this) .siblings() .map(function (i) { return $(this).css("background-image") }) .get() .join(", ")) });
只产生none
值。
有关详细信息,请参阅实时页面 。 这可能吗?
你不能使用:before
和:after
伪元素。 它们的目的是在分别指定的select器之前和之后插入内容。
用法示例:
HTML:
<span class='a'> Outer <span class='b'> Inner </span> </span>
CSS:
.a .b:before { content: "|Inserted using :before|"; } .a { color: blue; } .b { color: red; }
结果:
发生了什么事是文本|Inserted using :before|
被插入到内部跨度之前(好,真的,预先),因为它是类b
和类b
的元素的后代。 基本上, :before
和:after
:不select; 他们修改。
例:
这不符合预期:
HTML:
<span class='a'> <p>More text</p> <span class='b'> <p>More text</p> Inner </span> </span>
CSS:
.a .b:before { text-size: 100px; }
什么都没发生:
编辑:
:before
不是一个有效的jQueryselect器: http : //api.jquery.com/category/selectors/
我想你将需要使用以外的东西:before
或者试图使用jQuery插件提取原始规则: http : //flesler.blogspot.com/2007/11/jqueryrule.html
这里是使用纯javascript的解决scheme:
// Get the color value of .element:before var color = window.getComputedStyle( document.querySelector('.element'), ':before' ).getPropertyValue('color'); // Get the content value of .element:before var content = window.getComputedStyle( document.querySelector('.element'), ':before' ).getPropertyValue('content');