我们要连接函数名和变量名。单击<a>
标记时应发生这种情况。
我们如何连接函数和变量名?
问题:
所需的输出:
fn_dataId() should be fn_some123();
我们尝试过的事情
$(function() {
$('.link').on('click', function() {
console.log('clicked');
var dataId = $(this).attr('data-id');
console.log('data id - ' + dataId);
// What we tried, but didn't work.
fn_dataId();
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a data-id="some123" class="link">
Click here
</a>
答案 0 :(得分:5)
您可以连接字符串,并使用window["function_name"](args);
将结果用作函数:
function fn_some123() {
console.log('i have been called!');
}
$(function() {
$('.link').on('click', function() {
var dataId = $(this).attr('data-id');
window['fn_' + dataId]();
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a data-id="some123" class="link">
Click here
</a>
答案 1 :(得分:-2)
我不确定这个用例听起来像dataId作为更通用函数的参数可能更好,但是您可以使用以下方法解决它:
eval("fn_" + dataId + "()")
尽管要警惕-执行用户输入的任何操作都会带来很大的安全风险