javascript - 如何旋转仅单击的 SVG 图像
问题描述
我尝试在单击时旋转用于导航栏的 SVG 图像。我设法做到了,但问题是当我单击其中一个按钮时,所有图像都会立即旋转,而当我单击其他位置时,图像不会重置为原始位置。
这是我的 HTML
<!-- === Dropdown Menu === -->
<div class="collapse navbar-collapse" id="navToggler">
<div class="dropdown">
<button class="btn" type="button" id="navButton1" data-bs-toggle="dropdown" aria-expanded="false">
Product <img class="arrow reset" src="/blogr/images/icon-arrow-light.svg">
</button>
<ul class="dropdown-menu" aria-labelledby="navButton1">
<li><a class="dropdown-item" href="#">Overview</a></li>
<li><a class="dropdown-item" href="#">Pricing</a></li>
<li><a class="dropdown-item" href="#">Marketplace</a></li>
<li><a class="dropdown-item" href="#">Features</a></li>
<li><a class="dropdown-item" href="#">Integrations</a></li>
</ul>
</div>
<div class="dropdown">
<button class="btn" type="button" id="navButton1" data-bs-toggle="dropdown" aria-expanded="false">
Company <img class="arrow reset" src="/blogr/images/icon-arrow-light.svg">
</button>
<ul class="dropdown-menu" aria-labelledby="navButton1">
<li><a class="dropdown-item" href="#">About</a></li>
<li><a class="dropdown-item" href="#">Team</a></li>
<li><a class="dropdown-item" href="#">Blog</a></li>
<li><a class="dropdown-item" href="#">Career</a></li>
</ul>
</div>
<div class="dropdown">
<button class="btn" type="button" id="navButton1" data-bs-toggle="dropdown" aria-expanded="false">
Connect <img class="arrow reset" src="/blogr/images/icon-arrow-light.svg">
</button>
<ul class="dropdown-menu" aria-labelledby="navButton1">
<li><a class="dropdown-item" href="#">Contact</a></li>
<li><a class="dropdown-item" href="#">Newsletter</a></li>
<li><a class="dropdown-item" href="#">LinkedIn</a></li>
</ul>
</div>
</div>
<!-- END -->
CSS
.rotate {
transform: rotate(180deg);
transition: .3s;
}
.arrow.reset{
transform: rotate(0deg);
transition: .3s;
}
Javascript
$("button#navButton1.btn").on("click", function () {
$(".arrow").toggleClass("rotate");
$(".arrow").toggleClass("reset");
});
我想要发生的事情:
点击发生了什么:
当我点击另一个地方时发生了什么:
解决方案
在 onclick 功能中,您将选择.arrow
文档中的所有内容。我想您想要的是针对 clicked 内的箭头.btn
。
您必须将第二个参数传递给 jQuery 以告诉它仅在该节点内搜索。这样的事情应该这样做:
$('button#navButton1.btn').on('click', function (event) {
$('.arrow', event.target)
.toggleClass('rotate')
.toggleClass('reset');
});
推荐阅读
- linux - 如何在 crontab 中结束循环脚本?
- windows - Windows 7:确定哪个进程创建了命名管道?
- javascript - 如何使用 Parse REST API 将图像存储到 Parse with VueJs
- json - 试图通过使用哈希和嵌套哈希的 API 在 CLI 上显示信息时卡住了
- python - 查找所有可能的聚类
- unit-testing - 未找到模块测试路径
- azure-webjobs - 触发的 Webjob 是否应该完成?
- git - 如何在不使用 Git 提交的情况下保存文件?
- powershell - 获取特定域的 OU 权限
- r - Mapview 弹出图出现在悬停时?