在下面的代码中,我尝试使用jquery显示内容: text 。
如果删除:before
,它就可以了!为什么jQuery不允许javascript这样做。
This post (7 years ago) 谈论我的问题,但它解决了问题而没有提供简单的解决方案。
今天没有简单的解决方案来定位:before
?
感谢您的帮助
$(document).ready(function() {
$("div").mouseenter(function() {
$("li:nth-child(2):before").show();
});
$("div").mouseleave(function() {
$("li:nth-child(2):before").hide();
});
});

li {
display: none;
}
li:before {
content: 'Show me';
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li>This is a paragraph.</li>
<li>This is a second paragraph.</li>
</ul>
<div style="width:30px; height:30px; background:black;cursor:pointer;position:absolute; top:50px;"></div>
&#13;
答案 0 :(得分:0)
伪元素的可见性取决于其主要元素display
的可见性(即li:nth-child(2)
状态)。因此,您必须在jQuery函数中添加一个相应的行来显示/隐藏主要元素:
$(document).ready(function(){
$("div").mouseenter(function(){
$("li:nth-child(2)").show();
$("li:nth-child(2):before").show();
});
$("div").mouseleave(function(){
$("li:nth-child(2)").hide();
$("li:nth-child(2):before").hide();
});
});
&#13;
li{display:none;}
li:before{content:'Show me';}
&#13;
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<ul>
<li>This is a paragraph.</li>
<li>This is a second paragraph.</li>
</ul>
<div style="width:30px; height:30px; background:black;cursor:pointer;position:absolute; top:50px;"></div>
</body>
</html>
&#13;