【问题标题】:Toggle modal with vanilla javascript使用香草 javascript 切换模式
【发布时间】:2016-04-19 20:51:17
【问题描述】:

我习惯于使用 jQuery,但我正试图回到原版 javascript。我有一个链接,点击后会显示一个帐户模式。

我还想在单击“模态可见”时将模态的类更改为“模态可见”。这可以按预期工作,但是当我再次单击链接以关闭模式时,我需要将类更改回“模式隐藏”。

我想知道是否有人可以帮助我。也许它需要一个切换?

var accountModal = document.getElementById("account-modal");
document.querySelector('#account-photo').addEventListener('click', function(e) {
    e.preventDefault();
    accountModal.classList.add('modal-visible');
    accountModal.classList.remove('modal-hidden');
    accountModal.setAttribute('aria-hidden', 'false');
});

<a id="account-photo" href="/customer" tabindex="0" aria-expanded="false">Account</a>
<div id="account-modal" class="modal-visible" aria-label="Account Information" aria-hidden="false">Account Info</div>

【问题讨论】:

  • 你可以使用accountModal.classList.toggle('modal-visible');等

标签: javascript class toggle toggleclass


【解决方案1】:

如果我们假设它总是开始关闭,这是一种方法:

document.querySelector('#account-photo').addEventListener('click', function() {var is_visible = false; return function(e) {
    e.preventDefault();
    if(!is_visible) {
      accountModal.classList.add('modal-visible');
      accountModal.classList.remove('modal-hidden');
      accountModal.setAttribute('aria-hidden', !is_visible);
      is_visible = true;
    } else {
      accountModal.classList.remove('modal-visible');
      accountModal.classList.add('modal-hidden');
      accountModal.setAttribute('aria-hidden', !is_visible);
      is_visible = false;
    }
}});

此方法基本上充当手动编码的切换。

【讨论】:

  • 我只会将其更改为立即调用的函数,以免污染命名空间。例如。 (function() {var is_visible = false; return function(e) { ... })()(你也可以将is_visible设置为aria-hidden的反面)
  • 这样更有效,谢谢我更新了我的答案。
  • 谢谢@BarryDoyle。看起来 preventDefault 在帐户链接上不起作用,因此它尝试转到客户页面而不是显示模式。
猜你喜欢
  • 2018-03-22
  • 2021-11-09
  • 2019-02-03
  • 2012-09-23
  • 1970-01-01
  • 2017-06-29
  • 2021-11-29
  • 2023-01-18
  • 1970-01-01
相关资源
最近更新 更多