0

如果我有以下选择框:

<select id="a1" multiple>
<option>Apple</option>
<option>Banana</option>
<option>Carrot</option>
<option>Dates</option>
<option>Eggs</option>
<option>French fries</option>
</select>

编写条件if/else语句以使某些功能仅在选择某些项目时才执行的正确方法是什么?

含义:如果选择 Apple 或 Banana,则if满足条件 #1 并触发代码,
但如果选择 Carrot、Dates 或 Eggs,则if满足条件 #2 并触发不同的代码
等。

编辑:我想我以这个数组中的项目为例,但最有用的构造会将条件与选定的索引(或索引)挂钩,不一定只与字符串值挂钩。这样,任何选择框都可以使用条件参数,而不管其中的值如何。

4

2 回答 2

1

一种方法是使用相关索引的映射到要在这些索引上调用的相关函数,例如:

function functionOne() {
    console.log('functionOne called');
}

function functionTwo() {
    console.log('functionTwo called');
}

var functionMap = {
    '0-1-2': function(){
        functionOne();
    },
    '4-5': function(){
        functionTwo();
    }
};

$('select').change(function () {
    var valueString = $(this).find('option:selected').map(function () {
        return $(this).index();
    }).get().join('-');
    if (functionMap.hasOwnProperty(valueString)) {
        functionMap[valueString]();
    }
});

JS 小提琴演示

参考:

于 2013-08-31T14:38:27.817 回答
0

这个怎么启动?

http://jsfiddle.net/gZSBa/

$('#a1').change(function(){
    if($('#a1').val() == 'Carrot' ||  $('#a1').val() == 'Bannana'){
        alert('condition #1');
    }
});
于 2013-08-31T03:40:59.760 回答