Javascript 添加和删除类元素子级

Javascript 添加和删除类元素子级,javascript,jquery,Javascript,Jquery,我有这个复选框。正如名字所说,它在Stackoverflow上画了一个类似于我们这里的复选标记。 我希望这两个元素(checkmark_stem和checkmark_kick)在激活时都变为绿色,所以我尝试这样做: window.setInterval(function () { $('body').find('.checkmark').each(function (index) { var current = $(this); c

我有这个复选框。正如名字所说,它在Stackoverflow上画了一个类似于我们这里的复选标记。 我希望这两个元素(checkmark_stem和checkmark_kick)在激活时都变为绿色,所以我尝试这样做:

window.setInterval(function () {
        $('body').find('.checkmark').each(function (index) {
            var current = $(this);
            console.log(current);
            var url = current.data('refresh');
            console.log(url);
            var child = current.children;
            var answerID = current.data('answer');
            console.log(child);
            $.get(url + '?id=' + answerID, function (data) {

                data = JSON.parse(data);

                if(data.rating.solved_date === null)
                    current.children[0].removeClass('active');
                else
                    current.children[1].addClass('active');



            });
        });
    }, 1000);
但我似乎做得不对。是否有任何方法将类('active')添加到这两个元素

我的元素html

<blockquote class="accept-answer text-right {if !$isMine} hidden{/if}" >
            <div class="checkmark" title="Accept this answer" data-url="{url('controller/api/questions/mark_as_solved')}" data-refresh="{url('controller/api/questions/refresh_accepted_answers')}" data-answer="{$answer['answerid']}" data-question="{$question['publicationid']}">
                <div class="checkmark_kick" title="Unnacept this answer"></div>
                <div class="checkmark_stem" title="Unnacept this answer"></div>
            </div>
        </blockquote>

编辑:我以前有过这样的经历,而且效果很好。我只是想让马克看起来更像一张支票


window.setInterval(函数(){
$('body').find('.accepted.up').each(函数(索引){
var current=$(此);
console.log(当前);
var url=current.parent().data('refresh');
console.log(url);
var parent=current.parent();
var answerID=parent.data('answer');
console.log(answerID);
$.get(url+'?id='+answerID,函数(数据){
data=JSON.parse(数据);
如果(data.rating.solved_date==null)
current.removeClass(“活动”);
其他的
current.addClass('active');
});
});
}, 1000);

如果我不理解您的问题,向您致以亲切的问候

表示歉意,但请尝试一下:

    if(data.rating.solved_date === null) {
    for (var i = 0; i < current[0].children.length; i++) {
       current[0].children[i].classList.remove("active");
    }
    } else {

    for (var i = 0; i < current[0].children.length; i++) {
        current[0].children[i].classList.add("active");
        }

}   
if(data.rating.solved_date==null){
对于(var i=0;i<当前[0]。children.length;i++){
当前[0]。子项[i]。类列表。删除(“活动”);
}
}否则{
对于(var i=0;i<当前[0]。children.length;i++){
当前[0]。子项[i]。类列表。添加(“活动”);
}
}   

试试这个-它应该可以找到当前对象下的所有元素

 window.setInterval(function () {
    $('body').find('.checkmark').each(function (index) {
        var current = $(this);
        console.log(current);
        var url = current.data('refresh');
        console.log(url);
        var child = current.children;
        var answerID = current.data('answer');
        console.log(child);
        $.get(url + '?id=' + answerID, function (data) {

            data = JSON.parse(data);

            if (data.rating.solved_date == null)
               current.find('div').removeClass('active')

            else
              current.find('div').addClass('active')


        });
    });
}, 1000);

您可以使用jQuery选择两个子div并向它们添加“active”类。-。这就是您要查找的内容吗?请注意,
current
将只引用最终的
。复选标记
,因为您在每次迭代中都进行异步调用。的可能副本可能需要调试,并查看是否实际填充了“current”。可能是你所有挫折感的根源。
current.data
current.refresh
返回了正确的结果。我想这是理所当然的,我刚刚意识到,在纯javascript中工作时,我是多么理所当然地接受JQuery。修改了上述代码中的for循环。现在试试看
 window.setInterval(function () {
    $('body').find('.checkmark').each(function (index) {
        var current = $(this);
        console.log(current);
        var url = current.data('refresh');
        console.log(url);
        var child = current.children;
        var answerID = current.data('answer');
        console.log(child);
        $.get(url + '?id=' + answerID, function (data) {

            data = JSON.parse(data);

            if (data.rating.solved_date == null)
               current.find('div').removeClass('active')

            else
              current.find('div').addClass('active')


        });
    });
}, 1000);