【发布时间】:2011-10-23 22:01:59
【问题描述】:
我有一个选择(下拉列表),其中包含与操作相对应的选项。每个动作对应一个通用的 javascript 函数,该函数应该在 select 的更改事件上调用。所以它看起来像这样:
<select id="id-select-action" class="select-action right" value="Actions">
<option class="select-title">Actions</option>
<optgroup label="General Actions">
<option value="load_new_page('/url/to/new/page')">create a foo</option>
<option value="load_cbox('/url/to/cbox/contents')">manage tags</option>
</optgroup>
</select>
我的服务器代码动态生成每个选项的值字符串(它们是对 javascript 函数的调用,具体取决于操作的作用和显示方式),服务器还动态生成参数(视图的 url)。
我在 select 的 change 事件上有一个 jquery 侦听器,我想在选项的值字符串中调用 javascript 函数。
$("#id-select-action").change(function() {
function_call = $("#id-select-action option:selected").val();
//How do I execute the function_call?
});
似乎每个人都讨厌 eval() 。 . .但这是一个合适的案例,还是我应该做其他事情?我看了这个How to turn a String into a javascript function call?。 . .但是在那个中,您只有名称要处理,而不是完整的函数调用字符串,包括参数。
我这样做的原因是因为我正在为我们应用程序的某些类型的视图创建一个通用框架,并且操作可能不同(并且具有不同的 url 和/或调用不同的 javascript 函数)每一页。
谢谢!
【问题讨论】:
标签: javascript introspection dynamic-function