我可以直接将addClass添加到容器中的img标签吗?

时间:2013-01-02 19:11:33

标签: jquery html css

我正在使用Jquery开发iTunes风格的封面流程。我不经常使用Jquery框架。我不想使用插件,大多数插件看起来像我想要的东西。 http://jsfiddle.net/zorikii/cL63y/

目前,我只是想从img元素中删除活动标记。

$(".imgFrame img").removeClass(function(index, currentClass) {
    var removedClass;
    if ( currentClass === "active" ) {
        removedClass= "active";
    }
    return removedClass;
});

这些类声明如下:

.imgFrame
.imgFrame > img
.imgFrame.active > img

编辑:HTML:

<div class="imgFrame active">
    <img src="http://placehold.it/50x75"/>
</div>
<div class="imgFrame">
    <img src="http://placehold.it/50x75"/>
</div>

我有一种感觉$(".imgFrame img")不是我想要的,虽然我之前在不同的背景下看过这样的Jquery对象。

2 个答案:

答案 0 :(得分:3)

您需要$('.imgFrame').addClass('active');$('.imgFrame.active').removeClass('active');添加&amp;删除这些类。但是,如果你想做一些更深入的事情,比如检查addClass是否可以使用next()项元素,你可以这样做:

$('#btnNext').on('click', function() {
    var $curImg = $('.imgFrame.active'),
        $nextImg = $curImg.next();
    if ($nextImg.length) {
        $nextImg.addClass('active');
    } else {
        $('.imgFrame').first().addClass('active');
    }
    $curImg.removeClass('active');
});

这是一个jsFiddle示例,其中包含您的小提琴代码。

答案 1 :(得分:2)

如果您只想从active元素中移除课程img,您只需将代码添加到此处:

$('.imgFrame img').removeClass('active');

传递给方法的函数中的检查是多余的,因为jQuery在内部执行此操作。

为了帮助改进您正在使用的选择器,我需要查看您拥有的HTML代码。