jquery .next()无法正常工作

时间:2014-06-19 03:24:32

标签: jquery shortcut next

我正在使用js快捷插件shortcut.js启用向上和向下箭头的键盘快捷键来选择标签。单击选项卡时,将选中该选项卡。单击选项卡,然后使用向上和向下箭头选择相邻选项卡。我使用.prev().next()来控制选择,但.next()出了问题。选择选项卡后,选择只会跳到最后一个选项卡。

JSBIN:http://jsbin.com/maqiheja/3/edit?html,css,js,output

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');
    }
  });
});

1 个答案:

答案 0 :(得分:1)

您不需要循环。只需将选定的标签移动到下一个标签即可。

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');
    }
});