Javascript .next()未按预期工作

Javascript .next()未按预期工作,javascript,jquery,html,Javascript,Jquery,Html,所以 工作正常,它将类“active”添加到以前的同类div中 if($(this).hasClass('active')){ $(this).removeClass('active'); $(this).prev().addClass('active'); } 但是,将该类添加到下一个div(正如我所希望的那样)大约0.5秒,然后将其删除 以下是所有jQuery(根据您下面的评论)-请不要评论我糟糕的代码组织 if

所以

工作正常,它将类“active”添加到以前的同类div中

if($(this).hasClass('active')){             
    $(this).removeClass('active');
    $(this).prev().addClass('active');                  
}
但是,将该类添加到下一个div(正如我所希望的那样)大约0.5秒,然后将其删除

以下是所有jQuery(根据您下面的评论)-请不要评论我糟糕的代码组织

if($(this).hasClass('active')){
    $(this).removeClass('active');
    $(this).next().addClass('active');
}

如果您正在向前迭代这些元素,那么应该清楚发生了什么-您将“active”类添加到下一个元素中,然后下一次迭代将其删除

不过,这只是一个猜测,因为您没有发布足够的代码让我(或其他人)确信


编辑-好,现在您已经更新了问题,很明显猜测是正确的。
.each()
函数将向前迭代元素。当一个元素具有“active”类时,代码将其删除并添加到下一个元素中,然后在下一次迭代中,工作将被撤消。

因为您正在引用
,并且根据您描述的行为,您可能正在为元素列表迭代一个循环。因此,您正在完成所需的操作,但下一次迭代将删除以前的更改,这是由于您使用删除类,然后再添加回该类

现在,您的代码并没有说明这种情况是如何发生的

更新: 正如所怀疑的那样,您似乎在循环:
each(function(){
。在对象中迭代时,该类被向前推,并且没有按预期操作。您正在声明将该类添加到下一个元素,但将其从当前元素中删除,并且此行为在迭代过程中继续

另请注意,在将当前对象添加到下一个对象之前,首先更新代码以调用当前对象上的
removeClass()

                                $('#leftbutton').click(function(){

                var numberSlides = 0;
                $('#features-slider .slide').each(function(){
                    numberSlides++;
                });

                var index = $('.slide.active').index()+1;

                if( !$('.slide').is(':animated') && index != numberSlides  ){

                    var done = false;               

                    $('#features-slider .slide').each(function(){

                        if($(this).hasClass('active')){

                            var currentLeft = $(this).css('left');
                            var newLeft = parseInt(currentLeft)-115;

                        } else {

                            var currentLeft = $(this).css('left');
                            var newLeft = parseInt(currentLeft)-115;

                        }

                    $(this).animate({left: newLeft+'%'}, 1500);

                    if($(this).hasClass('active') && done == false){

                            $(this).next().addClass('active');
                            $(this).removeClass('active');
                            done = true;

                    }

            });

            });

你没有发布足够的代码,任何人都无法告诉我们。向我们展示一些Javascript。可以是任何东西,调用一个新函数或在remove函数周围设置一个间隔,在加载整个内容之前运行代码。你需要显示更多代码。调用代码的来源是哪里?它仍然会删除“active”抱歉,这个指令不是为了解决这个问题,只是一个建议,因为前面的结构没有意义。
                                $('#leftbutton').click(function(){

                var numberSlides = 0;
                $('#features-slider .slide').each(function(){
                    numberSlides++;
                });

                var index = $('.slide.active').index()+1;

                if( !$('.slide').is(':animated') && index != numberSlides  ){

                    var done = false;               

                    $('#features-slider .slide').each(function(){

                        if($(this).hasClass('active')){

                            var currentLeft = $(this).css('left');
                            var newLeft = parseInt(currentLeft)-115;

                        } else {

                            var currentLeft = $(this).css('left');
                            var newLeft = parseInt(currentLeft)-115;

                        }

                    $(this).animate({left: newLeft+'%'}, 1500);

                    if($(this).hasClass('active') && done == false){

                            $(this).next().addClass('active');
                            $(this).removeClass('active');
                            done = true;

                    }

            });

            });
if ($(this).hasClass('active')) {
    $(this).removeClass('active').next().addClass('active');
}