【问题标题】:Cycling through jQuery object to get previous/next values using only a key?循环通过 jQuery 对象以仅使用键获取上一个/下一个值?
【发布时间】:2015-08-11 04:41:30
【问题描述】:

发现这个非常棘手。我所要做的只是一个成绩号——[-1, 0, 1, 2, 3, 4, 5] 我用它作为键——我必须从中生成 1 个上一个和 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. 确保之前的链接从 5 级以下循环返回
  3. 确保下一个链接从幼儿园开始循环

(是的,这里的 prev/next 函数建议用于标准数组,而不是对象——对象是否有类似的方法?)

【问题讨论】:

    标签: jquery arrays object key cycle


    【解决方案1】:

    可能是在尝试通过使用 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;
      });
    

    希望有人觉得这很有用。

    【讨论】:

      猜你喜欢
      • 2018-09-02
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多