循环访问jQuery对象以仅使用密钥获取上一个/下一个值?

时间:2015-05-28 15:12:28

标签: jquery arrays object key cycle

发现这非常棘手。我必须使用的是一个等级编号 - [ - 1,0,1,2,3,4,5],我用它作为密钥 - 从中​​我必须生成1个前一个和下一个下一个链接。这是我到目前为止所做的:

var grUrl = {
    '-1': '/preschool_fun.html',
    '0': '/kindergarten_activities.html',
    '1': '/first_grade_stuff.html',
    '2': '/second_grade_education.html',
    '3': '/third_grade_crafts.html',
    '4': '/fourth_grade_numbers.html',
    '5': '/fifth_grade_reading.html'
};

  function prevGrade(num) {
    return grUrl[($.inArray(num, grUrl) - 1 + grUrl.length) % grUrl.length];
  }
  function nextGrade(num) {
    return grUrl[($.inArray(num, grUrl) + 1) % grUrl.length];
  }

$(document).on('click', 'a.leftarr', function() {
    var gradeNum = $(this).attr('data-grade');
    var prevLink = prevGrade(gradeNum);
    window.location = prevLink;
    return false;
});

然后我会对nextLink var进行反演。麻烦的是,我不知道如何:

  1. 从键
  2. 获取上一个/下一个对象值的值
  3. 确保上一个链接从5年级开始向下循环
  4. 确保下一个链接从学前班开始循环
  5. (是的,这里的prev / next函数是针对标准数组而不是对象建议的 - 对象是否有类似的方法?)

1 个答案:

答案 0 :(得分:0)

可能在尝试通过使用jQuery对象进行节约时,我创建的问题多于简单使用更直接但更简洁的解决方案。我找到的答案是使用两个数组(基于:'get prev and next items in array'):

  var grPos = [
  '-1',
  '0',
  '1',
  '2',
  '3',
  '4',
  '5'
  ];

  var grUrl = [
  '/preschool_crafts.htm',
  '/kindergarten_games.htm',
  '/first_grade_letters.htm',
  '/second_grade_numbers.htm',
  '/third_grade_activities.htm',
  '/fourth_grade_trips.htm',
  '/fifth_grade_reading.htm'
  ];

  $(document).on('click', 'a.leftarr', function(){
    window.location = grUrl[($.inArray($(this).attr('data-grade'), grPos) - 1 + grPos.length) % grPos.length];
    return false;
  });

  $(document).on('click', 'a.rightarr', function(){
    window.location = grUrl[($.inArray($(this).attr('data-grade'), grPos) + 1) % grPos.length];
    return false;
  });

希望有人觉得这很有用。