我怎样才能在客户端写一个承诺

How can i write a promise in Client Side

我不知道我已经搜索了很多,当我应用代码时,控制台弹出错误,其中有很多未定义的东西我想写一个简单的承诺

$(document).ready(function(event){
            $('.hover-effect').on('click',function(event){
                    filters.forEach(function(vertical){
                        $("div[data-filter=" + vertical + "]").removeClass("selected");
                    })
                        $(this).addClass('selected');
                        const datafilter = $(this).attr('data-filter');
                        $(".verticals").hide();
                        $('#'+datafilter).show();

                });

            });

for 循环完成后,我必须添加 class 选定项和其他内容

    $(document).ready(function(event){
            $('.hover-effect').on('click',function(event){
                 const datafilter = $(this).attr('data-filter');    
                 var promise=new Promise(function(resolve,reject){
                     filters.forEach(function(vertical){
                            $("div[data-filter=" + vertical + "]").removeClass("selected");
                     });
                     resolve('success');
                 });    
                 promise.then(function(value){
                    $("div[data-filter=" + datafilter + "]").addClass("selected");                          
                    $(".verticals").hide();
                    $('#'+datafilter).show();
                  });

                });
          });

您想要实现的目标尚不清楚,看起来您有一个具有悬停效果的按钮列表 class,当单击所有其他按钮时,它们的选择 class 应该被删除并且单击的元素应添加选定的 class。

您的这部分代码效果很好:

const datafilter = $(this).attr('data-filter');
$(".verticals").hide();
$('#'+datafilter).show();

话虽如此,我很确定这就是您要实现的目标。

$(document).ready(function(event){

    $('.hover-effect').on('click',function(e) {

        $(".hovereffect").removeClass('selected');
        $(this).addClass('selected');

        const datafilter = $(this).attr('data-filter');
        $(".verticals").hide();
        $('#'+datafilter).show();

    });

});

注意: 如果您在其他地方使用 "hovereffect" class,您应该创建一个新的 class 来实现此功能。