使用jquery在活动div上添加类

时间:2012-08-25 01:23:32

标签: jquery

JSFiddle。我想在当前活动div上添加类。我知道我需要使用addClass(),但我不知道我必须在哪里使用它?

HTML:

<div class="myclass selected">
Content 1
</div>
<div class="myclass">
    Content 2
</div>
<div class="myclass">
Content 3
</div>

<ul>
  <li><img     src="http://www.lillehammer.com/ImageVault/Images/id_2122/scope_66/ImageVaultHandler.aspx"     /></li>
  <li><img     src="http://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Valued_image_seal.svg/40px-            Valued_image_seal.svg.png" /></li>
  <li><img src="http://www.iconico.com/i/icoImageFilterPro100.gif" /></li>
</ul>

<a class="next">next</a>

jquery的:

$('img', 'ul').on('click', function() {
    $(".myclass").eq($(this).parent('li').index()).show()
                 .siblings('div').hide();
});

$('.selected').show();

$(".next").click(function(){
    if ($('.myclass:visible').length) {
        var curr = $('.myclass:visible'),
            next = curr.next('.myclass').length?    curr.next('.myclass'):$('.myclass').first();

        curr.hide();
        next.show();
    }else{
        $('.myclass').first().show();
    }
});

4 个答案:

答案 0 :(得分:3)

您是否打算突出显示当前有效的lihttp://jsfiddle.net/b3VaX/50/

您的代码很好,但如果您的css专注于突出显示,那么您的javascript可能只是担心切换活动元素的css类。

setActive(0);

$('li').click(function() {
    setActive($(this).index());
});

$(".next").click(function(){
    var current = $('ul li.selected').index(),
        maxIndex = $('ul li').length - 1,
        next = (current + 1) >  maxIndex ? 0 : (current + 1);

    setActive(next);
});

function setActive(i) {
    var li = $('ul li').eq(i);

    $('ul li').removeClass('selected');
    li.addClass('selected');
    $('.myclass').removeClass('selected');
    $('.myclass').eq(i).addClass('selected');
}

​

的CSS:

.myclass.selected {
    display: block;
}

ul li.selected {
    background-color: yellow;
}

答案 1 :(得分:0)

不完全确定您实际想要添加/删除类的位置,但请查看:

$(".next").click(function(){
    if ($('.myclass:visible').length) {
        var curr = $('.myclass:visible'),
            next = curr.next('.myclass').length?curr.next('.myclass'):$('.myclass').first();

        curr.hide().removeClass('someClassHere');
        next.show().addClass('someOtherClassHere');
    }else{
        $('.myclass').first().show();
    }
});

JSFiddle

答案 2 :(得分:0)

听起来您正在尝试向正在显示的元素添加一个类,并将其从您隐藏的元素中删除。这应该是这样的:http://jsfiddle.net/cjc343/b3VaX/15/

我所做的更改非常简单:在每个点击事件中,当您显示()某些内容时,会添加“已选择”类,当您隐藏()时,会删除它。

答案 3 :(得分:0)

也许这就是你想要做的 http://jsfiddle.net/unloco/b3VaX/39/

的CSS:

li.active img{border:1px solid red}

首先,'激活'第一个li,

$('ul#myul li:first').addClass('active');

然后点击激活下一个:

$('ul#myul li.active').removeClass('active').next().addClass('active').length ||
$('ul#myul li:first').addClass('active');