我想根据所单击的<a>
的数据值调用一个函数。这可能吗?我尝试了[call]();
和call();
。两者都返回错误。
function a() {
alert("Hi");
}
function b() {
alert("Bye");
}
$(function() {
$("a").click(function() {
var call = $(this).attr('data-value');
[call]();
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a data-value="a">A</a>
<a data-value="b">B</a>
答案 0 :(得分:2)
您可以从window
对象中调用它。
HTML 5中的window对象引用当前窗口以及其中包含的所有项目。因此,我们可以使用它来在字符串中运行函数以及函数的参数。
$(function(){
$("a").click(function() {
var call = $(this).attr('data-value')
window[call]();
});
});
您也可以通过使用eval()
来做到这一点。 但是请注意,eval()
方法较旧并且已过时。
$(function(){
$("a").click(function() {
var call = $(this).attr('data-value')
eval(call)();
});
});
答案 1 :(得分:0)
您应该使用eval
函数,该函数计算以字符串形式表示的代码,例如 :
function a() {
alert("Hi");
}
function b() {
alert("Bye");
}
$(function() {
$("a").click(function() {
eval($(this).attr('data-value') + '()');
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a data-value="a">A</a>
<a data-value="b">B</a>