jQuery和隐藏:after/:before伪类
可能重复:jQuery和隐藏:after/:before伪类,jquery,css,Jquery,Css,可能重复: 我尝试通过jQuery以多种方式隐藏:after伪类,但没有成功,我找到了另一种解决方案,在我的div下添加了一种空div,其中包含:after内容,然后完全隐藏div,以获得相同的效果 然而,我只是好奇是否有人设法找到了一种方法来隐藏:之后或:之前的东西。这是我试过但没用的 $('.search_box:after').hide(); $('.search_box:after').css('display', 'none'); 为了给您提供上下文,我有一个包含搜索表单等的div
我尝试通过jQuery以多种方式隐藏:after伪类,但没有成功,我找到了另一种解决方案,在我的div下添加了一种空div,其中包含:after内容,然后完全隐藏div,以获得相同的效果 然而,我只是好奇是否有人设法找到了一种方法来隐藏:之后或:之前的东西。这是我试过但没用的
$('.search_box:after').hide();
$('.search_box:after').css('display', 'none');
为了给您提供上下文,我有一个包含搜索表单等的div,当搜索处于活动状态时,我希望在div下启用一个小箭头指示器,指向找到的项目列表(使用:after via CSS构建),当未找到任何内容时,或者默认为完整列表(因为未找到任何内容)那我想把它藏起来 您可以动态添加
块来覆盖它。给它一个id
,您可以在需要时删除它
演示:
脚本:
$('#hello')。单击(函数(){
if($('#pseudo').length){
$('#pseudo')。删除();
}否则{
var css='#hello::在{display:none!important;}'之后;
document.head.insertAdjacentHTML('beforeEnd',css);
};
} );
HTML:
你好
CSS:
#你好::之后{
内容:“再见”;
}
ThinkingStiff有一个很好的主意
您还可以为搜索框添加和删除类,并且只使用after标记
类似于.hide:after{display:none}
和.show:after{/*normalcss*/}
。然后用javascript交换这些类
编辑:混淆名称您不能这样做。最好是在元素上使用类来切换伪元素的显示
<style>
.search_box:after {
content: 'foo';
}
.search_box.hidden:after {
display: none;
}
</style>
<script>
//Instead of these 2 lines
//$('.search_box:after').hide();
//$('.search_box:after').css('display', 'none');
//Use
$('.search_box').addClass('hidden');
</script>
.搜索框:在{
内容:“foo”;
}
.search_框。隐藏:在{
显示:无;
}
//而不是这两行
//$('.search_box:after').hide();
//$('.search_box:after').css('display','none');
//使用
$('.search_box').addClass('hidden');
Live example-请看这里:最后,我在搜索框的正下方使用了一个div,高度为0,宽度与搜索框相同,它有after样式,我将其隐藏/取消隐藏,而不是搜索框,但是TJ VanToll下面的解决方案也很有效。这是最好的选择,就像其他方法一样,你可以改变内容和颜色,但不能改变可见性。谢谢你的回答,这是我在互联网上找到的最好的解决方案。。。