Skip to content

Commit 10ffbb9

Browse files
committed
修复多下拉菜单共存(点击/关闭逻辑通用化)
1 parent 46aa907 commit 10ffbb9

1 file changed

Lines changed: 20 additions & 10 deletions

File tree

themes/claude/source/js/claude.js

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -186,19 +186,29 @@
186186

187187
// ===== Dropdown Click Toggle =====
188188
function initDropdownClick() {
189-
const trigger = document.querySelector('.nav__dropdown-trigger');
190-
const dropdown = document.querySelector('.nav__dropdown');
191-
if (!trigger || !dropdown) return;
192-
193-
trigger.addEventListener('click', function(e) {
194-
e.preventDefault();
195-
dropdown.classList.toggle('open');
189+
const triggers = document.querySelectorAll('.nav__dropdown-trigger');
190+
const dropdowns = document.querySelectorAll('.nav__dropdown');
191+
if (!triggers.length) return;
192+
193+
triggers.forEach(function(trigger, i) {
194+
trigger.addEventListener('click', function(e) {
195+
e.preventDefault();
196+
// Close other dropdowns
197+
dropdowns.forEach(function(d, j) {
198+
if (j !== i) d.classList.remove('open');
199+
});
200+
dropdowns[i].classList.toggle('open');
201+
});
196202
});
197203

198-
// Close on click outside
204+
// Close on click outside any dropdown
199205
document.addEventListener('click', function(e) {
200-
if (!dropdown.contains(e.target)) {
201-
dropdown.classList.remove('open');
206+
var clickedInside = false;
207+
dropdowns.forEach(function(d) {
208+
if (d.contains(e.target)) clickedInside = true;
209+
});
210+
if (!clickedInside) {
211+
dropdowns.forEach(function(d) { d.classList.remove('open'); });
202212
}
203213
});
204214
}

0 commit comments

Comments
 (0)