我有这个结构:
<div id="d1">
Text
<div id="d2">Word</div>
<a href="#hide">My other text</a>
</div>
现在,我希望点击后#hide:target
消失div#d2
。
我可以用 CSS 做到这一点吗?
我有这个结构:
<div id="d1">
Text
<div id="d2">Word</div>
<a href="#hide">My other text</a>
</div>
现在,我希望点击后#hide:target
消失div#d2
。
我可以用 CSS 做到这一点吗?
你可以用 CSS 做到这一点!
如果你稍微改变你的 HTML 标记,你可以通过使用 CSS 来实现:target
#d2:target {
display: none;
}
<div id="d1">
Text
<div id="d2">Word
<a href="#d2">My other text</a>
</div>
您可以使用 CSS 执行此操作,但您需要使用 javascript 来更改元素的 CSS(样式)。
此解决方案不需要插件(例如 jQuery)。
<div id="d1">
Text
<div id="d2">Word</div>
<a href="#hide" onclick="document.getElementById('d2').style.display='none';">My other text</a>
</div>
如果您希望它完全没有功能。
<div id="d1">
Text
<div id="d2">Word</div>
<a href="#hide" onclick="this.previousSibling.previousSibling.style.display='none';">My other text</a>
</div>
您可能应该使用 javascript 或 jQuery 来完成此操作。
$('#object').click(function(){
$('#tohide').hide();
});
if($('#d2 a').attr('href')=='#hide'){
$('#d2 a').click(function(){
$('#d2').hide();
});
}
但这不是正确的做法。使用类。
你可以用 jQuery 简单地做到这一点:
$(document).ready(function(){
$("a").click(function(){
$("#d2").hide();
});
});
我坚信 CSS 是为了样式,而 Javascript 是为了功能(而 HTML 是为了标记)。
我犯了一个错误,使用 :target 并在不应该使用 CSS 的地方构建功能,相信我,你会因为这些坏习惯而为自己做一场噩梦。在这种情况下,jQuery 将成为你最好的朋友。它适用于所有浏览器(支持 javascript),并且您不会让您的功能在极端情况下崩溃并且您的用户会生气。照杰克所说的去做,并使用一些简单的 jQuery。您还可以使用 .addClass 和 .removeClass 以其他方式更改 CSS,而不仅仅是隐藏/显示。