addEventListener 悬停但只触发一次?

addEventListener on hover but only trigger once?

我有一些代码在悬停在 .acfef-submit-button 元素上时显示弹出窗口。但是,我只希望这种情况发生一次。如何调整此代码以仅允许弹出窗口出现一次?

document.addEventListener('DOMContentLoaded', function() {
    let elements = document.querySelectorAll( '.acfef-submit-button' );
    let popupposts = ['6033'];

    elements.forEach(function(e,i){
    e.addEventListener( 'mouseenter', function(){
        elementorProFrontend.modules.popup.showPopup( { id: popupposts[i] } );
    } );
    });
});

有点老套,但设置一个 viewed 布尔值就可以了。

document.addEventListener('DOMContentLoaded', function () {
    let elements = document.querySelectorAll('.acfef-submit-button');
    let popupposts = ['6033'];
    let viewed = false; // or set this in the first loop if you need to

    elements.forEach(function (e, i) {
        e.addEventListener('mouseenter', function () {
            if (viewed === false) {
                elementorProFrontend.modules.popup.showPopup({ id: popupposts[i] });
                viewed = true;
            }
        });
    });
});

函数后添加一个选项对象{once: true}

使用 {once: true} 使函数 运行 只执行一次 :

document.addEventListener('DOMContentLoaded', function() {
    let elements = document.querySelectorAll( '.acfef-submit-button' );
    let popupposts = ['6033'];

    elements.forEach(function(e,i){
    e.addEventListener( 'mouseenter', function(){
        elementorProFrontend.modules.popup.showPopup( { id: popupposts[i] } );
    } );
    });
}, {once: true});