Javascript 查找元素hasClass并修改上一个元素

Javascript 查找元素hasClass并修改上一个元素,javascript,jquery,Javascript,Jquery,我有一个元素,最后一个,它有一个活动类。现在,我想写一个方法,它查找元素,元素有这个类,然后删除这个类并将它添加到上一个类中。 然后,如果单击按钮,我调用此方法 我有以下一段HTML代码: <div class="col-lg-6 col-md-6 step-panel" style="padding-right: 0"> <div class="step container-fluid"> <p>4</p> <

我有一个元素,最后一个,它有一个活动类。现在,我想写一个方法,它查找元素,元素有这个类,然后删除这个类并将它添加到上一个类中。 然后,如果单击按钮,我调用此方法

我有以下一段HTML代码:

<div class="col-lg-6 col-md-6 step-panel" style="padding-right: 0">
    <div class="step container-fluid">
        <p>4</p>
    </div>
    <div class="step">
        <p>3</p>
    </div>
    <div class="step">
        <p>2</p>
    </div>
    <div class="step step-active">
        <p>1</p>
    </div>
</div>

我无法让它工作,有人能告诉我原因并提出解决方案吗?

我认为这应该可以解决问题

function indicateStep() {
    $('.step.step-active')
    .removeClass('step-active')
    .prev()
    .addClass('step-active');
}

像这样的事情应该可以做到:

function indicateStep() {
    $('.step-active').removeClass('step-active')
        .prev('.step').addClass('step-active');
}
基本上,这会找到当前的
步骤活动
元素,删除
步骤活动
类,转到上一个
步骤
元素,并将该类添加到该元素中


代码无法工作的原因之一是,您没有保存
$('.step').find().hasClass('step-active')到一个变量<代码>$(此处)
不是您需要的元素。

我假设您正在调用按钮单击结果的
指示步骤

问题出在

$('.step').find().hasClass('step-active');
行,以及您没有使用尝试查找结果的事实

为了清晰起见,这里有一个详细的版本:

function indicateStep() {
    // Find the active step and remember that element
    var step = $(".step.step-active");

    // Remove the class from it
    step.removeClass("step-active");

    // Add it to the previous one instead
    step.prev().addClass("step-active");
}
和单行程序版本:

function indicateStep() {
    $(".step.step-active").removeClass("step-active").prev().addClass("step-active");
}

$('.step panel').find('.step active')…
类似于
var elem=$(“.step panel”).find('.step active')?已经有了一些关于如何做的答案-你得到的不起作用的原因是因为你正在寻找一个带有class
step
的div,然后查看带有
find
的孩子,找到一个带有class
step活动的
,显然找不到。非常感谢,它确实解决了问题。我不确定应该捕获哪一个,是.step面板还是.step。我使用了
$('.step active')
,因为这正是您要修改的元素。我想知道如何找到具有特定类的元素。我认为在这种情况下,如果我能用类标识元素,这是一个很好的解决方案。这正是
$('.step active')
所做的。它选择步骤处于活动状态的元素作为类。(其中的
告诉jQuery在其类中查找具有以下字符串的元素)单行版本看起来更吸引我:)@photoscene:是的,为了清晰起见,我只包含详细版本。:-)
function indicateStep() {
    $(".step.step-active").removeClass("step-active").prev().addClass("step-active");
}