我如何在客户端写一个承诺

时间:2018-08-10 11:16:06

标签: javascript promise hover 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循环完成,那么我必须添加所选的类和其他内容

2 个答案:

答案 0 :(得分:1)

您要实现的目标尚不清楚,似乎您具有悬浮效果类的按钮列表,单击时,所有其他按钮都应删除其选定的类,并且单击的元素应已添加所选的类。

这部分代码效果很好:

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”类,则应创建一个新类来实现此功能。

答案 1 :(得分:0)

    $(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();
                  });

                });
          });