如何将点击事件传递给setTimeout?

时间:2020-05-19 18:07:42

标签: javascript jquery

我有一个click事件,在该click事件中,我需要使用setTimeOut函数,原因是因为当我尝试显示叠加层时,它不会发生,但是当我将其放入函数中时,其余的函数进入超时然后工作。它是我唯一能找到的解决方案,但问题是setTimeOut无法识别click事件。如果这没有多大意义,那么希望代码能说明一切

function TurnItOn() {
    $('#SiteOverlayFullScreen').css('display', 'block');
}

$(document).on('click', '#ddValidation ul li', function (e) {
        TurnItOn();
        let self = e;
        setTimeout(function () {
            let selectedItem = e.target.text;
            let rightPanelWidth = $('#innerVertical').width();

            $('#ddValidation ul li').removeClass('active-font-size');

            //$('#SiteOverlayFullScreen').css('display', 'block');
            //StartBusyIndicator('#SiteOverlayFullScreen');

            switch (selectedItem) {
                case 'Quote': {
                    //StartBusyIndicator('#SiteOverlayFullScreen');

                    e.currentTarget.classList.add('active-font-size');

                    $('#innerVertical').addClass('show-validation-window');

                    $('#ValidationWindow').css({ 'display': 'block', width: rightPanelWidth });

                    $('#btnSplitScreen').trigger('click');

                    CheckValidationResultsByRoomsInQuote();

                    //$('#SiteOverlayFullScreen').css('display', 'none');

                } break;
                case 'Room': {
                    e.currentTarget.classList.add('active-font-size');

                    $('#innerVertical').addClass('show-validation-window');

                    $('#ValidationWindow').css({ 'display': 'block', width: rightPanelWidth });

                    $('#btnSplitScreen').trigger('click');

                    CheckValidationResultsByRoomInQuote();

                    //$('#SiteOverlayFullScreen').css('display', 'none');

                } break;
                default: {
                    e.currentTarget.classList.add('active-font-size');
                    $('#ValidationWindow').css('display', 'none');
                    $('#innerVertical').removeClass('show-validation-window');
                    $('#btnSplitScreen').trigger('click');

                    ResetValidationErrorLabels();

                    //$('#SiteOverlayFullScreen').css('display', 'none');
                } break;
            }
        });
});

在任何case语句中抛出的错误是

无法读取未定义的属性“ add”

1 个答案:

答案 0 :(得分:-1)

尝试使用$(this)代替e.currentTarget,然后使用addClass例如。 foreach ($user->publishers as $userPublisher) { foreach ($userPublisher->teams as $publisherTeam) { $teamUserIds = array_merge($teamUserIds , $publisherTeam->members->pluck('id')->toarray()); } } $deDupedIds = array_unique($teamUserIds, SORT_NUMERIC); $idsCount = count($deDupedIds);