jqueryでcssのafter要素を変更する業務があったのですが、 以外とサポートしていなかったのですね。 (私の調査不足かもしれませんが、)
そのため、jQueryでcssのafter要素を操作できるようにする手順をまとめました。 こちらがすごい参考になりました、ありがとうございます。 JQuery select pseudo-element :after [duplicate]
jQueryを拡張
(function($) {
jQuery.fn.extend({
getPseudo: function(pseudo, prop) {
var props = window.getComputedStyle(
$(this).get(0), pseudo
).getPropertyValue(prop);
return String(props);
},
setPseudo: function(_pseudo, _prop, newprop) {
var elem = $(this);
var s = $("style");
var p = elem.getPseudo(_pseudo, _prop);
var r = p !== "" ? new RegExp(p) : false;
var selector = $.map(elem, function(val, key) {
return [val.tagName
, val.id
? "#" + val.id : null
, val.className ? "." + val.className : null]
});
var _setProp = "\n" + selector.join("")
.toLowerCase()
.concat(_pseudo)
.concat("{")
.concat(_prop + ":")
.concat(newprop + "};");
return ((!!r ? r.test($(s).text()) : r)
? $(s).text(function(index, prop) {
return prop.replace(r, newprop)
})
: $(s).append(_setProp)
);
}
})
})(jQuery);
使い方
var element = “#sample_id”;
$(element).setPseudo(":after", "color", "red”);
これで、任意の要素のafterを変更することができます。 このサンプルだと、色を赤に変える内容になります。