这是我的情况:
我有一个涵盖 4 个不同主题的网站。我从 4 个 div 开始,每个 div 都有这些主题的标题。例如,
<div><p> Physics </p></div>
<div><p> Chemistry </p></div>
<div><p> Biology </p></div>
<div><p> Math </p></div>
当我单击“物理”div 时,我希望出现另一个 div,详细说明一些物理问题或其他东西。再次单击会导致“详细说明 div”消失。我在这里与一个“主题”合作:
这是我用来完成此任务的 jQuery 代码。
$(document).ready(function () {
$(".phys").click(function () {
if ($(".phys:last").css("visibility") == "visible") {
$(".phys").css("visibility", "");
} else {
$(".phys").css("visibility", "visible");
}
});
});`
我可以编写此函数 4 次不同的时间,一次针对我正在使用的每个主题,但想要一个更清洁的解决方案。我想知道是否可以通过以下方式声明所有 div:
<div class="subject phys"><p> Physics </p></div>
<div class="subject chem"><p> Chemistry </p></div>
<div class="subject bio"><p> Biology </p></div>
<div class="subject math"><p> Math </p></div>
然后在单击“主题” div 时运行某个 click() 函数,让代码识别该特定 div 所指的主题,并显示适当的“详细 div”。
我相信我可以通过子类化来做到这一点:
/* CSS */
div.subject{}
.subject.phys{}
.subject.chem{}
.subject.bio{}
.subject.math{}
有什么想法吗?有没有更好的方法来实现这样的东西?
编辑
这是一个更新的小提琴,其 HTML 大致与实现中的一样: