我正在构建一个首选项列表,用户从列表中选择多个项目,然后按优先顺序将它们呈现给他们。
我已经构建了一个原型,但是我需要一些我想要添加的功能的帮助。我希望用户看到他们选择的下一个项目的偏好。
行为将是:
我创建了一个JSfiddle here
我想能够以某种方式使用grep来做到这一点?
var nextPreference = $.grep(preferencesAsText, function(v) {
// return v !== First preference that isn't one of the preferences that are already selected
});
任何帮助都会很棒,谢谢!
编辑:通过这样做,我设法获得了所选首选项列表中的项目数组:
var chosenPreferences = $('[data-schemeorder]').map(function() {
return $( this ).text();
})
.get();
var arrayOfChosen = $.makeArray(chosenPreferences);
console.log(arrayOfChosen);
所以基本上我只需要一种方法来找到不在此列表中的第一个偏好,如果这有意义的话...... updated fiddle
答案 0 :(得分:0)
为什么不使用schemePrefArray.length
来获取所选元素的数量并显示所需的文字?
显示的文字为preferencesAsText[schemePrefArray.length]
没有
答案 1 :(得分:0)
好的,所以我想我已经把它想出来了。如果您创建所选首选项的数组,然后使用grep创建不在首选项文本中的项目数组,则可以使用它来查找未选择的第一个项目。
var chosenPreferences = $('[data-schemeorder]').map(function() {
return $( this ).text();
})
.get();
var arrayOfChosen = $.makeArray(chosenPreferences);
var differenceArray = [],
initialVal = 0;
$.grep(preferencesAsText, function(el) {
if($.inArray(el, arrayOfChosen) == -1) differenceArray.push(el);
initialVal++;
})
if(differenceArray[0] === undefined) {
$('#chosenLimit').show();
$('#chooseYourPrefs').hide();
} else {
$('#chosenLimit').hide();
$('#chooseYourPrefs').show();
$('#chooseNextPreference').text(differenceArray[0]);
}
更新的小提琴here