html函数属性的赋予,你可以将javascript函数名称设置为html属性吗?

你可以,是的.你是否应该完全是另一个问题,答案几乎肯定是“不”(就执行字符串而言;就下面所示的替代方案而言,有时它是有用的).

你评估代码片段的方式(你所拥有的不只是一个函数名,因为())将使用可怕的eval:

eval(fn);

几乎总是比使用eval更好的选择. (见下文.)

评估示例:

$("#example").on("click", function() {

var fn = $("#example").attr("data-function-name");

eval(fn);

});

function showAllElements() {

alert("showAllElements was called");

}

Click Me

其中一个更好的选择是将函数引用存储为对象的属性,然后使用括号表示法根据函数名称获取函数引用:

例:

var functions = {

showAllElements: function() {

alert("showAllElements was called");

}

};

$("#example").on("click", function() {

var fn = $("#example").attr("data-function-name");

functions[fn]();

});

Click Me

请注意,我只是存储函数名称,而不是任意代码.

更新:如果您的功能嵌套在对象内,请参见canon’s answer,以便巧妙地处理它,例如: mumble.foo.doSomething,使用reduce. (reduce是ES5功能,但它是可填充的.)

旁注:除非您执行的操作不仅仅是检索data- *属性的值,否则请不要使用数据,请使用attr. data初始化元素的数据高速缓存,读入该元素的所有data- *属性,并将它们复制到高速缓存.如果你没有使用它,没有理由这样做.您使用数据访问data- *属性的想法是一种常见的误解.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值