简体   繁体   English

jQuery:addEventListener“点击”在 Chrome 移动版 (android) 上不起作用

[英]jQuery: addEventListener 'click' isn't working on Chrome mobile (android)

So I have this jQuery that is a basic accordion for an FAQ that's working (meaning it opens and closes as expected) everywhere except mobile chrome for 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));

Relevant HTML if you care:相关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>

As mentioned above, this works everywhere except Chrome for Mobile.如上所述,这适用于除 Chrome for Mobile 之外的任何地方。 Desktop, Samsung inte.net, Safari for iPhone, etc. They all open on touch, but chrome for mobile will not. Desktop, Samsung inte.net, Safari for iPhone 等。它们都是触摸打开的,但是 chrome for mobile 不会。 I have tried switching from click to touch but either I did it wrong or that isn't the answer either.我试过从click切换到touch ,但要么我做错了,要么这也不是答案。

There's also the possibility that I had it right and caching is screwing me, but I've deleted site data in between each edit, so that shouldn't be the problem.也有可能我做对了,缓存搞砸了我,但我在每次编辑之间删除了站点数据,所以这不应该是问题所在。

Any ideas?有任何想法吗? Thanks in Advance!提前致谢!

Consider the following example.考虑以下示例。

Desktop: https://jsfiddle.net/Twisty/3kxbm8Lr/桌面: https://jsfiddle.net/Twisty/3kxbm8Lr/

Mobile: https://jsfiddle.net/Twisty/3kxbm8Lr/show手机: https://jsfiddle.net/Twisty/3kxbm8Lr/show

JavaScript 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);
});

This uses more jQuery to select the elements and toggle the specific Attribute.这使用了更多 jQuery 到 select 元素并切换特定属性。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM