Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery.next()工作不正常_Jquery_Shortcut_Next - Fatal编程技术网

jquery.next()工作不正常

jquery.next()工作不正常,jquery,shortcut,next,Jquery,Shortcut,Next,Im使用js快捷键插件为上下箭头启用键盘快捷键以选择选项卡。单击选项卡时,将选中该选项卡。单击选项卡并使用上下箭头选择相邻选项卡。我正在使用.prev()和.next()来控制选择,但是.next()有问题。选择某个选项卡时,所选内容只会跳到最后一个选项卡 JSBIN: JS: shortcut.add("up",function() { $('.tab').each(function(){ var selected = $(this).hasClass('selected');

Im使用js快捷键插件为上下箭头启用键盘快捷键以选择选项卡。单击选项卡时,将选中该选项卡。单击选项卡并使用上下箭头选择相邻选项卡。我正在使用
.prev()
.next()
来控制选择,但是
.next()
有问题。选择某个选项卡时,所选内容只会跳到最后一个选项卡

JSBIN:

JS:

shortcut.add("up",function() {
  $('.tab').each(function(){
    var selected = $(this).hasClass('selected');
    var end = $('.tab:first-of-type').hasClass('selected');
    if((selected === true) && (end === false)){
      $(this).removeClass('activeTab selected');
      $(this).prev().addClass('activeTab selected');
    }
  });
});

shortcut.add("down",function() {
  $('.tab').each(function(){
    var selected = $(this).hasClass('selected');
    var end = $('.tab:last-of-type').hasClass('selected');
    if((selected === true) && (end === false)){
      $(this).removeClass('activeTab selected');
      $(this).next().addClass('activeTab selected');
    }
  });
});

你不需要循环。只需将所选选项卡移动到下一个选项卡一次

shortcut.add("down", function() {
    var selected = $('.tab.selected');
    var end = $('.tab:last-of-type').hasClass('selected');
    if (selected.length && !end) {
        selected.removeClass('activeTab selected');
        selected.next().addClass('activeTab selected');
    }
});

shortcut.add("up", function() {
    var selected = $('.tab.selected');
    var end = $('.tab:first-of-type').hasClass('selected');
    if (selected.length && !end) {
        selected.removeClass('activeTab selected');
        selected.prev().addClass('activeTab selected');
    }
});

你在所有标签上的循环。进入“选定”选项卡时,将选中下一个选项卡。然后下一个循环将其再次移动到之后的循环,依此类推。摆脱循环,找到所选选项卡,然后选择下一个。谢谢。您能解释一下为什么要使用
selected.length
length
是集合中的对象数。如果选择器不匹配任何内容,则它将为
0
,这相当于
false