javascript - 将mootools中的隐藏/显示函数转换为纯javascript

标签 javascript

我在 a SO answer 中找到了以下函数:

function toggleTooltip(id) {
    var e = document.id(id);
    if( !e.toggleCallback ) {
        e.toggleCallback = function() { toggleTooltip(id); };
    }
    if(e.style.display=='block') {
        e.style.display='none';
        document.removeEvent('click', e.toggleCallback);
    } else {
        e.style.display='block';
        document.addEvent('click', e.toggleCallback);
    }
}

单击时,它会显示特定元素,然后单击任意位置,它会隐藏它。可以找到一个工作示例 here .

我喜欢将其用作纯 JavaScript 函数(即没有 mootools 依赖项),但我不太明白如何转换函数 toggleCallback/removeEvent/addEvent 到普通的 javascript。

任何帮助将不胜感激。

最佳答案

你可以这样做:

// Might want to use document DOMContentLoaded event instead of load.
window.addEventListener('load', function() { 
  document.querySelectorAll('a.tooltip').forEach(function(link) {
    var tooltip = document.getElementById(link.id + '_tooltip'),
      callback = function(e) {
        if (tooltip.style.display === 'block') {
          tooltip.style.display = 'none';
          document.removeEventListener('click', callback);
        } else {
          tooltip.style.display = 'block';
          document.addEventListener('click', callback);
        }
        e.stopPropagation();
      };
    link.addEventListener('click', callback);
  });
});
<a class="tooltip" id="link1" href="#">Show tooltip</a>
<div style="display:none" id="link1_tooltip">Click anywhere to dismiss</div>

<小时/>

看一下:

<小时/>

Revised jsfiddle

关于javascript - 将mootools中的隐藏/显示函数转换为纯javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44550730/

相关文章:

javascript - Django:无法触发 AJAX 调用并将值发送回我的表单

javascript - 算法题: Packing rods into a row

javascript - Ember.js - 为什么 .property() 不会触发但 .observes() 会触发

javascript - 即使设置了键,React CSSTransitionGroup 也不起作用

javascript - jQuery 可拖出窗口

javascript - 使用 jQuery sider 防止元素转换

javascript - ES6 对象解构默认参数

javascript - 无法使用 Javascript 将 HTML 按钮元素的标题或值设置为 C 度符号

javascript - 如何在html页面中显示xml数据?

javascript - 使用ReactJS和map显示JSON多维数组数据