0

我已经生成了一组这样的 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 旁边的 DIV”?

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

4

3 回答 3

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)当前正在运行的元素。

于 2013-07-10T16:02:00.927 回答
1

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

获取匹配元素集中每个元素的紧随其后的兄弟。如果提供了选择器,则仅当它与该选择器匹配时,它才会检索下一个兄弟。

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

于 2013-07-10T16:02:15.223 回答
1

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

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

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

于 2013-07-10T16:02:23.447 回答