html - jQuery:当 javascript 不可用时,下拉菜单将被扩展
问题描述
我有一个简单的 JQuery 代码,可以在单击时扩展下拉菜单。
但是当 Javascript 不可用时,无法扩展下拉菜单。
当 Javascript 不可用时,是否有任何选项如何制作扩展下拉菜单?
我的代码:
$('.mainDropdownChevron').click(function() {
var $ptag = $(this).closest('.mainDropdown').find('p');
$('.mainDropdownChevron.active').not(this).removeClass('active');
$('p.active').not($ptag).removeClass('active');
$(this).toggleClass('active'); // for you css .chevron.active
$ptag.toggleClass('active');
});
.mainDropdownChevron {
transition: transform 0.5s;
}
.mainDropdownChevron.active {
transform: rotate(180deg);
}
.mainDropdown {
margin: 24px 0;
}
p {
max-width: 500px;
display: none;
font-size: 0.8em;
}
img {
max-width: 30px;
}
p.active {
display: block;
margin: 0 auto;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="mainDropdowns">
<div class="mainDropdown">
<div class="clickableMainDropdown">
<span>Intraorálne snímky</span>
<img loading="lazy" class="mainDropdownChevron" src="https://cdns.iconmonstr.com/wp-content/assets/preview/2018/240/iconmonstr-arrow-up-thin.png" alt="Checklist chevron">
</div>
<div>
<p id="pDropdownService">
Sú snímky s nízkou dávkou žiarenia, ktoré sa vkladajú do úst a za pomoci pacienta alebo držiaka sú chytené v ústach. Na zálkade veľkosti platničky zobrazujú detailne menší počet zubov.
</p>
</div>
</div>
</div>
解决方案
我认为最简单的方法是使用 CSS,如果不点击,它可以检测悬停。默认情况下,为 body 元素指定类“NoJavaScript”。在脚本标签中,从正文中删除该类,然后您可以使用仅在 JavaScript 无法运行时才有效的条件 CSS。
在技术上(我认为)使用 CSS 来检测点击事件并存储诸如菜单的当前状态之类的东西在技术上是可行的,但是简单地使用 :hover 标记会容易得多。特别是因为很少有人在没有 JS 的情况下运行他们的浏览器。
$('body').removeClass('NoJavaScript');
.mainDropdownChevron {
transition: transform 0.5s;
}
.mainDropdownChevron.active {
transform: rotate(180deg);
}
.NoJavaScript .mainDropdownChevron:hover {
transform: rotate(180deg);
}
.mainDropdown {
margin: 24px 0;
}
p {
max-width: 500px;
display: none;
font-size: 0.8em;
}
img {
max-width: 30px;
}
p.active {
display: block;
margin: 0 auto;
}
.NoJavaScript .mainDropdownChevron:hover p {
display: block;
margin: 0 auto;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="mainDropdowns">
<div class="mainDropdown">
<div class="clickableMainDropdown">
<span>Intraorálne snímky</span>
<img loading="lazy" class="mainDropdownChevron" src="https://cdns.iconmonstr.com/wp-content/assets/preview/2018/240/iconmonstr-arrow-up-thin.png" alt="Checklist chevron">
</div>
<div>
<p id="pDropdownService">
Sú snímky s nízkou dávkou žiarenia, ktoré sa vkladajú do úst a za pomoci pacienta alebo držiaka sú chytené v ústach. Na zálkade veľkosti platničky zobrazujú detailne menší počet zubov.
</p>
</div>
</div>
</div>
推荐阅读
- php - 如何向 Woocommerce 产品标题链接添加标题?
- java - Oracle 连续查询通知是否仅限用于 Java 客户端?
- mysql - 谁知道每天有一笔交易的用户数量?
- docker - 2 个副本 pod 中有 1 个出现 ImagePullBackOff 错误
- ios - Swift删除后台线程上的核心数据不更新MOC
- javascript - 如何在单击按钮时转换 div
- ionic-framework - 在 ion-avatar 中显示内部阴影
- php - symfony 从 4.4.10 更新到 5.1 后出现 500 错误
- sql-server - “SUM”不是可识别的内置函数名称
- reactjs - NextJs 9.4.4 + 材质 UI + 样式化组件项目平均需要 15 秒来保存更改