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();
}
});
答案 0 :(得分:3)
您是否打算突出显示当前有效的li
? http://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();
}
});
答案 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');