簡體   English   中英

jQuery:addEventListener“點擊”在 Chrome 移動版 (android) 上不起作用

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM