调用名为select value的函数

时间:2017-04-22 03:01:48

标签: jquery

<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();

2 个答案:

答案 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()