[英]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.