<select class='sela' id='simg'>
<option value='imgdisk'>IMG DISK</option>
<option value='imglib'>IMG LIBRARY</option>
<option value='imgweb'>IMG WEB</option>
<option value='video'>VIDEO</option>
</select>
JS
$('#simg').change(function(){
var a = $(this).val();
if (a == 'imgdisk'){imgdisk();}
else if (a == 'imglib'){imglib();}
else if (a == 'imgweb'){imgweb();}
else video();
});
所以我调用名为select value的函数 有更短的方式吗?类似的东西:
var a = $(this).val();
a();
答案 0 :(得分:3)
是的,有办法做到这一点。你搜索的是eval函数;
eval(a +"()");
$('#simg').change(function(){
var a = $(this).val();
eval(a +"()");
});
function imgdisk(){
alert('imgdisk function');
}
function imglib(){
alert('imglib function');
}
function imgweb(){
alert('imgweb function');
}
function video(){
alert('video function');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class='sela' id='simg'>
<option value='imgdisk'>IMG DISK</option>
<option value='imglib'>IMG LIBRARY</option>
<option value='imgweb'>IMG WEB</option>
<option value='video'>VIDEO</option>
</select>
答案 1 :(得分:1)
假设这些是全局函数,请使用
if(window[a] && typeof window[a] === 'function'){
window[a]();
}
如果它们不是全局的,请创建一个引用这些函数的对象:
var funcs = {
imglib: imglib,
imgweb: imgweb
};
if(funcs[a]){
funcs[a]();
}
这是为了避免使用 evil eval()