我有一个简单的select元素,它有多个值,基本上分为四类。为了尝试更高效,我认为最好将它们分组到数组中并检查“selected”值是否在其中一个中,根据选择值所在的数组打印不同的文本。 用开关来做效率也不会更高效吗?
也许它有点模糊。用户以带有多个值的下拉列表开始(例如:x1,y2,x3,y4,z1)如果x1,x3然后执行某些操作,如果y2,y4然后执行某些操作,我可以使用该语句。但我认为将这些值放入数组会更清晰(例如arrayX = x1,x3和arrayY = y2,y4。),因此脚本会检查哪个数组包含所选值,并为每个数组打印自定义消息。
经过一些修补,这是一个有效的例子:
$( "#search2" )
.change(function() {
var group1 = ['PL'];
var group2 = ['AD','RS','CH'];
var group3 = ['AT','BE','BG','HR','CY','CZ','DK','EE','FI','FR','GR','ES','NL','IR','IS','LT','LU','LV','MT','DE','NO','PT','RO','SK','SI','SE','HU','GB','IT'];
var group4 = ['SM','MC','LI'];
var group5 = ['QQ'];
$("#search2 option:selected").each(function () {
str2 += $(this).val();
if ($.inArray(str2, group1) !== -1) {
groupNr ="1";
}
else if ($.inArray(str2, group2) !== -1) {
groupNr = "2";
}
else if ($.inArray(str2, group3) !== -1){
groupNr = "3";
}
else if ($.inArray(str2, group4) !== -1){
groupNr = "4";
}
else if ($.inArray(str2, group5) !== -1){
groupNr = "5";
}
});
if($('#search2').val()){
$('#submit').removeClass('hidden');
}
})
.trigger( "change" );
答案 0 :(得分:0)
他们是一种更简单的方法。你有一个数组并为每个值分配一个组。像
mygroupArray['IA'] = 1, mygroupArray['KS'] = 1
mygroupArray['MN'] = 2 and so on
然后你可以做这样的事情
groupNumber = mygroupArray [optionValue] === undefined? 4:mygroupArray [optionValue]
这是更快捷方便的方法。因为你只进行一次比较。但是在初始化方面还有点多。
如果你理解,请告诉我。
答案 1 :(得分:0)
这是一种方法,全面运作的JSFiddle补充道:
var groups = [
['IA', 'KS'],
['MN', 'OK'],
['KE']
];
for (var i = 0; i < groups.length; i++)
{
if (groups[i].indexOf(optionValue) >= 0)
{
$('.result2').text('element in group ' + (i+1));
}
}
检查完整的JSFiddle:https://jsfiddle.net/orvvyrhp/1/
更新:JSFiddle提供多选支持:https://jsfiddle.net/orvvyrhp/2/