Jquery 在循环中添加/删除类

Jquery 在循环中添加/删除类,jquery,Jquery,我有3倍的跨度,需要像这样添加/删除一个类: <span class="w1 selected">Hello</span> <span class="w2">Bonjour</span> <span class="w3">Bon Giorno</span> 你好 你好 邦吉奥尔诺 它从第一个跨距上的“selected”类开始,2秒后,“selected”类从第一个跨距中删除并添加到第二个跨距。然后第三个循环返回到第一个循

我有3倍的跨度,需要像这样添加/删除一个类:

<span class="w1 selected">Hello</span>
<span class="w2">Bonjour</span>
<span class="w3">Bon Giorno</span>
你好 你好 邦吉奥尔诺 它从第一个跨距上的“selected”类开始,2秒后,“selected”类从第一个跨距中删除并添加到第二个跨距。然后第三个循环返回到第一个循环。我正在努力让它工作。我使用的是
addClass(“selected”).delay(2000).removeClass(“selected”)
。但是这没有任何作用。我做错了什么


之前文章的不同之处在于,我有3个不同的跨度,需要选择“类”“按顺序添加和删除,因此在第1个跨度上有2秒,在第2个跨度上有2秒,在第3个跨度上有2秒,然后在第1个跨度上再次返回,等等。我可以使用setinterval添加类,但它会同时为所有3个跨度激发。有人对如何做到这一点有什么建议吗?谢谢。

您拥有的是一个简单的重复队列。你所犯的错误与我在中所犯的错误完全相同,这就是为什么我将其作为副本关闭的原因。由于其他人似乎不同意我的观点,我将继续回答这个问题,以便更清楚地解释细节

并且不要与jQuery的动画队列交互。只能与函数一起使用,例如
队列
动画
淡出
淡出
,等等

要使
addClass
removeClass
在队列中工作,只需将它们包装在对
.queue()
的调用中:

正如我在书中所说:

提供给函数的参数是一个函数,用于在您希望执行异步操作(例如使用
$.ajax
)时通知队列继续

以上所有问题在问题之间都是相同的,在这里它们略有分歧

拥有多个元素对于能够按顺序对它们进行排队并不特别重要。所需要的只是一个元素来保存队列,并在队列中的整个元素集合上进行迭代

//this function builds the queue chain for each of
//the elements in the selection
function toggleSelected(next) {
  var $this = $(this);

  //select the elements that need to be toggled through
  $('.a, .b, .c').each(function (i, elem) {
    //add a queue chain for each element individually
    $this.queue(function (n) {
      $(elem).addClass('selected');
      //n was used to avoid conflicting with `next` above
      n();
    }).delay(2000).queue(function (n) {
      $(elem).removeClass('selected');
      n();
    });
  });

  //after every element's been queued up, run this
  //function again to loop infinitely
  $this.queue(toggleSelected);

  next();
}

//pick an element, any element
//here I went with .a because it was in the collection
//it could just as easily have been window or document
//or body or html or ...
$('.a').queue(toggleSelected);
功能切换选择(下一步){
var$this=$(this);
$('.a、.b、.c')。每个(函数(i、elem){
$this.queue(函数(n){
$(elem).addClass('selected');
n();
}).延迟(2000).队列(函数(n){
$(elem).removeClass('selected');
n();
});
});
$this.queue(toggleSelected);
next();
}
$('.a').queue(切换选择)
span{
背景颜色:灰色;
显示:内联块;
高度:50px;
宽度:50px;
}
.选定{
背景颜色:蓝色;
}

您拥有的是一个简单的重复队列。你所犯的错误与我在中所犯的错误完全相同,这就是为什么我将其作为副本关闭的原因。由于其他人似乎不同意我的观点,我将继续回答这个问题,以便更清楚地解释细节

并且不要与jQuery的动画队列交互。只能与函数一起使用,例如
队列
动画
淡出
淡出
,等等

要使
addClass
removeClass
在队列中工作,只需将它们包装在对
.queue()
的调用中:

正如我在书中所说:

提供给函数的参数是一个函数,用于在您希望执行异步操作(例如使用
$.ajax
)时通知队列继续

以上所有问题在问题之间都是相同的,在这里它们略有分歧

拥有多个元素对于能够按顺序对它们进行排队并不特别重要。所需要的只是一个元素来保存队列,并在队列中的整个元素集合上进行迭代

//this function builds the queue chain for each of
//the elements in the selection
function toggleSelected(next) {
  var $this = $(this);

  //select the elements that need to be toggled through
  $('.a, .b, .c').each(function (i, elem) {
    //add a queue chain for each element individually
    $this.queue(function (n) {
      $(elem).addClass('selected');
      //n was used to avoid conflicting with `next` above
      n();
    }).delay(2000).queue(function (n) {
      $(elem).removeClass('selected');
      n();
    });
  });

  //after every element's been queued up, run this
  //function again to loop infinitely
  $this.queue(toggleSelected);

  next();
}

//pick an element, any element
//here I went with .a because it was in the collection
//it could just as easily have been window or document
//or body or html or ...
$('.a').queue(toggleSelected);
功能切换选择(下一步){
var$this=$(this);
$('.a、.b、.c')。每个(函数(i、elem){
$this.queue(函数(n){
$(elem).addClass('selected');
n();
}).延迟(2000).队列(函数(n){
$(elem).removeClass('selected');
n();
});
});
$this.queue(toggleSelected);
next();
}
$('.a').queue(切换选择)
span{
背景颜色:灰色;
显示:内联块;
高度:50px;
宽度:50px;
}
.选定{
背景颜色:蓝色;
}


你真的必须记下这个问题吗?谢谢!不,如果你查看另一个帖子,它实际上是不同的。如果你仔细阅读我的问题,你会发现其中的区别。我有多个跨度,需要按顺序添加/删除该类,但我无法使其正常工作,因此我提出了问题。让我知道你是否能帮助我,但这对我一点用处都没有。嗨,维姆,你的问题确实不是@zzbov所说问题的重复。但是,我确实在这个线程()中找到了您问题的答案,并在这个提琴中将其更改为您的需要:。我也是来自审阅队列,我投票重新打开它,因为它不是链接问题的副本。Sanderfish发布的内容可能是您想要的,但我会留下一个小提琴,让您再尝试一下。以下是我对它的看法:我对它考虑了一些,我不喜欢旋转阵列,以下是一个改进的版本(在我看来):您真的必须记下这个问题吗?谢谢!不,如果你查看另一个帖子,它实际上是不同的。如果你仔细阅读我的问题,你会发现其中的区别。我有多个跨度,需要按顺序添加/删除该类,但我无法使其正常工作,因此我提出了问题。让我知道你是否能帮助我,但这对我一点用处都没有。嗨,维姆,你的问题确实不是@zzbov所说问题的重复。但是,我确实在这个线程()中找到了您问题的答案,并在这个提琴中将其更改为您的需要:。我也是来自审阅队列,我投票重新打开它,因为它不是链接问题的副本。Sanderfish发布的内容可能正是你想要的,但我会留下一个小提琴,让我再尝试一下。以下是我对它的看法:我想