繁体   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