我所拥有的是可用时间/日期的表格表示。用户可以通过点击链接选择时间"选择"。当点击此链接时,该课程"活跃"设置,但我想要的是当用户选择另一个时间删除上一个类并在新元素 上设置。
到目前为止我所拥有的:
<div class="wrapper-div">
<div class="row">
<div class="date">monday, 2015 09 02 </div>
<div class="time">12:10</div>
<div class="select"><a href="#">Choose <span class="select-arrow"></span></a>
</div>
</div>
<div class="row">
<div class="date">thuesday, 2015 06 22</div>
<div class="time">12:30</div>
<div class="select"><a href="#">Choose <span class="select-arrow"></span></a></div>
</div>
<div class="row">
<div class="date">wensday, 2015 02 9</div>
<div class="time">09:15</div>
<div class="select"><a href="#">Choose <span class="select-arrow"></span></a></div>
</div>
</div>
jQuery代码:
$('.select a').click(function(e){
e.preventDefault();
$(this).parents().eq(1).addClass('active');
$('.wrapper-div div').each(function(){
removeClass('active');
});
});
我的工作小提琴:http://goo.gl/E5hhyn
解决这个问题的最佳方法是什么?
答案 0 :(得分:4)
您的each
语法不正确,因为您没有在任何jQuery对象上调用removeClass
。无论如何,each
本身的需求是多余的。试试这个:
$('.select a').click(function(e){
e.preventDefault();
$('.wrapper-div div').removeClass('active'); // remove first
$(this).parents().eq(1).addClass('active');
});
答案 1 :(得分:0)
工作小提琴http://jsfiddle.net/gtog33qk/1/
$('.select a').click(function(e){
e.preventDefault();
$('.wrapper-div div').each(function(i,e){
$(e).removeClass('active');
});
$(this).closest('.row').addClass('active');
});
刚刚更改了一些代码,最近用于查找完整的活动行,并且需要在元素上使用removeClass,如Rory所述
答案 2 :(得分:0)
您可以使用jQuery的.find()方法来查找要删除的类,然后使用jQuery的.remove()方法删除该类。现在课程已经消失,只需添加新的.active类。
答案 3 :(得分:0)
首先添加Class并删除所有“活动”类,如果您先删除所有“活动”类,然后将其添加到应该使用的单击类中。
$('.wrapper-div .row').each(function(){
$(this).removeClass('active');
});
$(this).parents().find(".row:first").addClass('active');