有没有办法循环这四次以缩短它?我试图将班级从站立改为坐着,然后一次又一次回来。
if(sitting > 0) {
$('.standing:first-of-type').removeClass('standing').addClass('sitting');
} else {
$('.sitting:first-of-type').removeClass('sitting').addClass('standing');
}
if(sitting > 1) {
$('.standing:nth-of-type(2)').removeClass('standing').addClass('sitting');
} else {
$('.sitting:nth-of-type(2)').removeClass('sitting').addClass('standing');
}
if(sitting > 2) {
$('.standing:nth-of-type(3)').removeClass('standing').addClass('sitting');
} else {
$('.sitting:nth-of-type(3)').removeClass('sitting').addClass('standing');
}
if(sitting > 3) {
$('.standing:nth-of-type(4)').removeClass('standing').addClass('sitting');
} else {
$('.sitting:nth-of-type(4)').removeClass('sitting').addClass('standing');
}
答案 0 :(得分:5)
:lt(index)
选择匹配集中索引小于index
的所有元素。 :gt(index)
选择匹配集中索引大于index
的所有元素。来自jQuery Docs
由于班级sitting
应添加到.standing
小于index
变量值的sitting
类的所有元素,:lt
选择器可以与变量sitting
一起使用以选择此类元素。然后可以在jQuery元素集上使用addClass()
和removeClass()
来分别添加和删除传递的类。
$('.standing:lt(' + sitting + ')').removeClass('standing').addClass('sitting');
$('.sitting:gt(' + sitting + ')').removeClass('sitting').addClass('standing');
答案 1 :(得分:1)
嗯,你可以用一个丑陋的for循环:
function toggleSitting(sitting){
var initial = 0;
var final = 3;
for(var i = initial; i <= final; i++){
$('.standing:nth-of-type(' + (i+1) +')')
.toggleClass('standing', sitting < i)
.toggleClass('sitting', sitting > i);
}
}
toggleSitting(sitting);
答案 2 :(得分:1)
这只是一个草案而且未经测试,但是你想要做的事情有一个逻辑。一旦找到逻辑,就可以在循环中使用它。像那样:
QNetworkReply * QNetworkAccessManager::get(const QNetworkRequest & request)
答案 3 :(得分:1)
也许是这样的事情:
var numberOfPlaces = 4;
for(var i=0; i<sitting && i<numberOfPlaces ; i++){
$('.standing:nth-of-type(' + (i+1) + ')').removeClass('standing').addClass('sitting');
}
for(var i=sitting; i<numberOfPlaces ; i++){
$('.sitting:nth-of-type(' + (i+1) + ')').removeClass('sitting').addClass('standing');
}
或者这个:
var numberOfPlaces = 4;
for(var i=0; i<numberOfPlaces; i++){
if(i<sitting){
$('.standing:nth-of-type(' + (i+1) + ')').removeClass('standing').addClass('sitting');
}else if(i>=sitting){
$('.sitting:nth-of-type(' + (i+1) + ')').removeClass('sitting').addClass('standing');
}
}
答案 4 :(得分:1)
你有HTML和CSS吗?
您可以使用变量指定类型的'nth':
$('.standing:nth-of-type(' + i + ')')
虽然不确定这适用于i = 1的情况。你可能需要先在那里输入。
如果没有CSS和HTML,则不清楚您想要做什么。
你可能也想看看这个: