在divs javascript数组上按下按键(Navigate on keypress over array of divs javascript)

编程入门 行业动态 更新时间:2024-10-15 08:19:11
在divs javascript数组上按下按键(Navigate on keypress over array of divs javascript) <div id="wrapper"> <img class="seperator selected" src="imgs/character_1.png" tabindex="0" /> <img class="seperator" src="imgs/character_2.png" tabindex="0" /> <br /> <img class="seperator" src="imgs/character_3.png" tabindex="0" /> <img class="seperator" src="imgs/character_4.png" tabindex="0" /> <br /> <img class="seperator" src="imgs/character_5.png" tabindex="0" /> <img class="seperator" src="imgs/character_6.png" tabindex="0" /> </div>

所以我正在听keypress ,如果它是keyCode === 32 ,那就是空格键,将selected类移到一起。 所以我可以执行thisIndex++并在每次按下空格时递增+1但是如何定位该元素添加一个类并删除前一个? 我得到的addClass is not a function错误。

$("body").on("keydown", function(e) { var thisIndex = $(".selected").index(); var newIndex = null; if (e.keyCode === 32) { $(".seperator").removeClass("selected"); thisIndex++; $('.seperator').get(thisIndex).addClass("selected"); } }); <div id="wrapper"> <img class="seperator selected" src="imgs/character_1.png" tabindex="0" /> <img class="seperator" src="imgs/character_2.png" tabindex="0" /> <br /> <img class="seperator" src="imgs/character_3.png" tabindex="0" /> <img class="seperator" src="imgs/character_4.png" tabindex="0" /> <br /> <img class="seperator" src="imgs/character_5.png" tabindex="0" /> <img class="seperator" src="imgs/character_6.png" tabindex="0" /> </div>

So i'm listening to keypress and if it's keyCode === 32 which is the space bar, move the selected class one across. So I can do thisIndex++ and increment up by +1 everytime space is pressed but how do I target that element add a class and remove the previous one? I get addClass is not a function error.

$("body").on("keydown", function(e) { var thisIndex = $(".selected").index(); var newIndex = null; if (e.keyCode === 32) { $(".seperator").removeClass("selected"); thisIndex++; $('.seperator').get(thisIndex).addClass("selected"); } });

最满意答案

get()方法返回DOM对象,因此您不能在其上使用jQuery addClass()方法,而是使用eq()方法根据索引获取jQuery对象。

$('.seperator').eq(thisIndex).addClass("selected");

您可以通过链接方法将if中的所有行组合成一个。

$(".seperator").removeClass("selected").eq(thisIndex + 1).addClass("selected");

更新:您需要获取img标记集合中的索引(使用类seperator ),否则索引计算包括br标记。

$("body").on("keydown", function(e) {
  // specify the collection as the argument
  var thisIndex = $(".selected").index('.seperator');

  if (e.keyCode === 32)
    $(".seperator")
    .removeClass("selected")
    .eq(thisIndex + 1)
    .addClass("selected");

}); 
  
.selected {
  border: 1px solid red
} 
  
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="wrapper">
  <img class="seperator selected" src="imgs/character_1.png" tabindex="0" />
  <img class="seperator" src="imgs/character_2.png" tabindex="0" />
  <br />
  <img class="seperator" src="imgs/character_3.png" tabindex="0" />
  <img class="seperator" src="imgs/character_4.png" tabindex="0" />
  <br />
  <img class="seperator" src="imgs/character_5.png" tabindex="0" />
  <img class="seperator" src="imgs/character_6.png" tabindex="0" />
</div> 
  
 

The get() method returns DOM object so you can't use jQuery addClass() method on it, instead use eq() method to get jQuery object based on index.

$('.seperator').eq(thisIndex).addClass("selected");

You can combine all the lines inside the if into one by chaining the methods.

$(".seperator").removeClass("selected").eq(thisIndex + 1).addClass("selected");

UPDATE : You need to get index within the img tag collection(with class seperator) otherwise index calculated including the br tag.

$("body").on("keydown", function(e) {
  // specify the collection as the argument
  var thisIndex = $(".selected").index('.seperator');

  if (e.keyCode === 32)
    $(".seperator")
    .removeClass("selected")
    .eq(thisIndex + 1)
    .addClass("selected");

}); 
  
.selected {
  border: 1px solid red
} 
  
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="wrapper">
  <img class="seperator selected" src="imgs/character_1.png" tabindex="0" />
  <img class="seperator" src="imgs/character_2.png" tabindex="0" />
  <br />
  <img class="seperator" src="imgs/character_3.png" tabindex="0" />
  <img class="seperator" src="imgs/character_4.png" tabindex="0" />
  <br />
  <img class="seperator" src="imgs/character_5.png" tabindex="0" />
  <img class="seperator" src="imgs/character_6.png" tabindex="0" />
</div> 
  
 

更多推荐

本文发布于:2023-08-06 20:34:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1455808.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   按下   按键   javascript   divs

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!