关注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);
提前致谢
答案 0 :(得分:1)
尝试更改此行
$('.displayCheck').html(result.join(' '));
到
$('.displayCheck').html(result.sort().join(' '));
编辑,了解有关根据该字词后面的数字进行排序的问题。
更改
$('.displayCheck').html(result.sort().join(' '));
到
$('.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(' ')[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(' '));
我会考虑更改存储结果数组的方式。 var result = [];
可能会将其更改为text, value
的对象数组,如:
var results = [
{
"text": theTextOfTheOption,
"value": theValueOfTheOption
},
{
...
}
];
然后你可以根据value
进行排序,而不是对结果数组中的字符串进行拆分。