在后续元素之间抛出一个类

时间:2013-07-10 15:59:36

标签: jquery selector

我已经生成了一组像这样的DIV。

<div id="donkey1" class="target"></donkey>
<div id="donkey2" class="target"></donkey>
<div id="donkey3" class="target"></donkey>

然后我在第一个上设置一个类,然后尝试将它传播到下一个类。

$("#donkey1").addClass("active");
...
$("#donkey1").on("keyDown", function() {
  .removeClass("active")
  .getNextTag().addClass("active");
});

我的问题是,我希望通过任何 DIV(当然是某个类)进行传播,而且我无法在 getNextTag 方法。

我会这样开始(但仍未实现)。

$("#donkey1").addClass("active");
...
$(".target").on("keyDown", function() {
  .removeClass("active")
  .getNextTag().addClass("active");
});

如何实现“让DIV紧挨着这个”?

请注意,我更喜欢来使用索引。它只是因为我缺乏想象力。实际的ID很可能是非常不规则的。

3 个答案:

答案 0 :(得分:1)

您需要尝试这种方式:

$(".target").on("keyDown", function() {
  //assuming you want to remove on the current element.
  $(this).removeClass("active").next().addClass("active");
  //Just on the safer side if you have other siblings which are not `.target` use a selector in .next()
   $(this).removeClass("active").next('.target').addClass("active");
});

使用 .next() 转到下一个div,.target选择目标,$(this)选择当前元素。

答案 1 :(得分:1)

为什么不能只使用jQuery的next()运算符?

  

获取该组中每个元素的紧随其后的兄弟   匹配的元素。如果提供了选择器,它将检索下一个选择器   兄弟姐妹只有匹配那个选择器。

您可以在其中添加选择器,例如next(".target")

答案 2 :(得分:1)

如果您正在使用jQuery选择元素并想对下一个元素执行某些操作,那么您可以使用恰当命名的next()方法:

$('.target').on('keyDown', function() {
    $('.active').removeClass('active').next().addClass('active');
}

当你得到最后一个元素时要小心;你需要为这种情况进行某种检查。