[英]jQuery: addEventListener 'click' isn't working on Chrome mobile (android)
所以我有这个 jQuery,它是一个基本的手风琴,用于常见问题解答,除了 Android 的移动 chrome 之外,它在任何地方都有效(意味着它按预期打开和关闭):
const items = document.querySelectorAll(".accordion button");
function toggleAccordion() {
const itemToggle = this.getAttribute('aria-expanded');
for (i = 0; i < items.length; i++) {
items[i].setAttribute('aria-expanded', 'false');
}
if (itemToggle == 'false') {
this.setAttribute('aria-expanded', 'true');
}
}
items.forEach(item => item.addEventListener('click', toggleAccordion));
相关HTML如果你关心:
<div class="accordion-item">
<button id="accordion-button-1" aria-expanded="false">
<span class="accordion-title">TITLE</span>
<span class="icon" aria-hidden="true"></span>
</button>
<div class="accordion-content">
<div class="acc-content-inner">
<p class="acc-title">Title</p>
<p>CONTENT</p>
</div>
</div>
</div>
如上所述,这适用于除 Chrome for Mobile 之外的任何地方。 Desktop, Samsung inte.net, Safari for iPhone 等。它们都是触摸打开的,但是 chrome for mobile 不会。 我试过从click
切换到touch
,但要么我做错了,要么这也不是答案。
也有可能我做对了,缓存搞砸了我,但我在每次编辑之间删除了站点数据,所以这不应该是问题所在。
有任何想法吗? 提前致谢!
考虑以下示例。
桌面: https://jsfiddle.net/Twisty/3kxbm8Lr/
手机: https://jsfiddle.net/Twisty/3kxbm8Lr/show
JavaScript
$(function() {
var items = $("[id^='accordion-button-'");
function toggleAccordion() {
var itemToggle = $(this).attr('aria-expanded');
items.attr("aria-expanded", 'false');
$(this).attr('aria-expanded', itemToggle == 'true' ? 'false' : 'true');
}
items.click(toggleAccordion);
});
这使用了更多 jQuery 到 select 元素并切换特定属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.