将addEventListener触发为“ onclick”,而不是“ click”

时间:2019-08-03 16:33:59

标签: jquery html

我目前有一个类似的按钮

<span class="ripples">Click</span>

当有人单击时,我在其中添加涟漪效果。我要附加这样的效果:

document.addEventListener('click', addRippleEffect, false);

效果是:

var addRippleEffect = function (e) {
    var target = e.target;
    if (target.tagName.toLowerCase() !== 'span') return false;
    var rect = target.getBoundingClientRect();
    var ripple = target.querySelector('.ripple');
    if (!ripple) {
        ripple = document.createElement('span');
        ripple.className = 'ripple';
        ripple.style.height = ripple.style.width = Math.max(rect.width, rect.height) + 'px';
        target.appendChild(ripple);
    }
    ripple.classList.remove('show');
    var top = e.pageY - rect.top - ripple.offsetHeight / 2 - document.body.scrollTop;
    var left = e.pageX - rect.left - ripple.offsetWidth / 2 - document.body.scrollLeft;
    ripple.style.top = top + 'px';
    ripple.style.left = left + 'px';
    ripple.classList.add('show');
    return false;
}

那很好用。

现在,问题是如果单击按钮,我想触发onclick,例如:

<span class="ripples" onclick="open();">Click</span>

这也有效,但是波纹效应似乎消失了,可能是因为onclickclick寄存器之前触发(我只是在这里猜测)。

如何解决此问题,使效果也显示onclick

0 个答案:

没有答案