正确的判决顺序

时间:2015-02-17 18:18:47

标签: javascript jquery

关注this code,我想从上到下选择:

Word2然后是Word1,最后是Word3 3

显示的结果是:

Word2 2 Word1 1 Word3 3

但我正在寻找类似的东西:

Word1 1 Word2 2 Word3 3

因此,一旦我选择了Word1,它应该放在开头,然后是Word2。

如果有人可以帮助纠正我的代码中的错误:

function nextItemWasAlreadyShown(index) {
  var continueLoop = false;
  var resText = $('.displayCheck').html();
  var text = $('select.ayaNum').eq(index).next('input[type="hidden"]').val();
  if (resText.indexOf(text) > -1) continueLoop = true;
    return continueLoop;
  }

function getValues() { 
  var result = [];
  var me = this; 
  $('select.ayaNum').each(function (idx, el) {
    var $el = $(el);
    var textToAdd = $el.next('input[type="hidden"]').val() + ' ' + $el.val();
    result.splice(idx, 0, textToAdd);
    if ((me === el) && !nextItemWasAlreadyShown(idx + 1)) return false;
  });
  $('.displayCheck').html(result.join(' '));
}

$('select.ayaNum,input[type="hidden"]').change(getValues);

提前致谢

1 个答案:

答案 0 :(得分:1)

尝试更改此行

 $('.displayCheck').html(result.join(' '));

 $('.displayCheck').html(result.sort().join(' '));

Fiddle

编辑,了解有关根据该字词后面的数字进行排序的问题。

更改

$('.displayCheck').html(result.sort().join(' '));

$('.displayCheck').html(result.sort(function (a, b) {      
    return +a.split(' ')[1] - +b.split(' ')[1];        
}).join(' '));

Fiddle

以及您可以更改的后续示例:

$('.displayCheck').html(result.sort(function (a, b) {      
    return +a.split(' ')[1] - +b.split(' ')[1];        
}).join(' '));

$('.displayCheck').html(result.sort(function (a, b) {      
    return +a.split(' ')[a.split(' ').length-1] - +b.split(' ')[b.split(' ').length-1] ;        
}).join(' '));

Fiddle

我会考虑更改存储结果数组的方式。 var result = [];可能会将其更改为text, value的对象数组,如:

var results = [
  {
    "text": theTextOfTheOption,
    "value": theValueOfTheOption
  },
  {
    ...
  }
];

然后你可以根据value进行排序,而不是对结果数组中的字符串进行拆分。