基于选择列表的jquery触发器函数

时间:2014-11-28 22:48:01

标签: jquery function selectlist

我有一个非常基本的jQuery问题。我正在尝试触发现有功能,具体取决于从选择列表中选择的选项。

示例HTML:

<select name="selectAction" id="selectAction">
  <option>Choose an action</option>
  <option value="firstFunction">First Function</option>
  <option value="secondFunction">Second Function</option>
  <option value="thirdFunction">Third Function</option>
</select>

目标是在选择了该选项时运行firstFunction(),如果选择了那个则运行secondFunction()等。

我可以获取选择列表的值,但不知道如何使用它来执行特定的功能。

到目前为止,我有这个:

$(document).ready(function() {
$('body').on('change', '#selectAction', function(e) {
    var theValue = $(this).find(":selected").val();
});

});

我知道我可以使用eval()来处理这个问题 - eval(theValue + '()'); - 但我正试图避免这种做法。我也意识到我可以使用一系列if / else或switch / case语句,但这似乎有点不优雅。有没有办法根据值名称本身触发函数?

TIA - Joe

1 个答案:

答案 0 :(得分:1)

创建一个充当函数名称空间的对象。并选择更改绑定。

$(function() {
   var API = {
     firstFunction: function(){},
     secondFunction: ...
   };

   $('#selectAction').change(function() {
      var method = API[$(this).val()];
      return method && method();
   });
});