如何用JQuery操作CSS伪文档元素before或after中的content
在前端定制化建站过程中,偶尔会遇到要用JQuery来操作CSS伪文档元素的情况,JQuery操作真实的文档元素大家都很熟悉,但如果按照操作真实的文档元素那样操作伪文档元素,就会发现完全不起作用。那么JQuery能不能操作伪文档元素呢?
其实也是可以的,只是操作方法有些不同。
如果你要处理的是content属性,那么可以把内容传入先伪文档元素的data attribute中,然后通过JQuery修改他的父元素的”data-content”来操控它,从而改变伪文档元素before或者after中content属性的值。
在HTML文件中:
- <span>foo</span>
在JQuery文件中:
- $(‘span’).hover(function(){
- $(this).attr(‘data-content’,’bar’);
- });
在CSS文件中:
- span:after {
- content: attr(data-content) ‘ any other text you may want’;
- }
如果你要改的是伪文档元素中非content属性,那就不能这么像上面这样做了,因为非content不支持attribute。但是可以考虑用给:before或者:after增加一个class,例如叫”changed”,通过JQuery的toggleClass完成操控。
在HTML文件中:
- <ul class=“pageMenu”>
- <li class=“active”>a</li>
- <li>b</li>
- <li>c</li>
- </ul>
在JQuery文件中:
- $(‘.pageMenu .active’).toggleClass(‘changed’);
在CSS文件中:
- .pageMenu .active::after {
- content: ”;
- margin-top: –6px;
- display: inline–block;
- width: 0px;
- height: 0px;
- border-top: 14px solid white;
- border-left: 14px solid transparent;
- border-bottom: 14px solid white;
- position: absolute;
- rightright: 0;
- }
- .pageMenu .active.changed:after {
- /* this selector is more specific, so it takes precedence over the other :after */
- border-top–width: 22px;
- border-left–width: 22px;
- border-right–width: 22px;
- }
好啦,赶快来试试效果吧!以后在前端定制化建站中就不怕再遇到要用JQuery操控CSS伪文档元素的情况了。