【发布时间】:2018-01-24 19:41:08
【问题描述】:
我正在尝试将点击事件附加到一个按钮,该按钮运行来自参数和自身的调用。
我想要的是始终显示第一个警报,然后执行作为字符串存储在 myparam.onclick 中的第二个警报。
无效尝试:
var myparam = { onclick: 'alert("second");' };
$('#my_button_id').on('click', function(){ alert('first'); myparam.onclick });
我知道如果我把 myparam 改成合法的函数,比如:
var myparam = {onclick: function(){alert('second');} }
我可以这样称呼它
$('#my_button_id').on('click', myparam.onclick);
但我仍然不知道如何将两个连接在一起。我不想在 myparam func 调用中每次都调用第一个警报。
感谢任何帮助。
【问题讨论】:
-
您希望将其存储为字符串的用例是什么?必须在该字符串上使用
eval(),但这并非没有很大的安全问题。另一种方法是将命名函数存储为字符串,将参数存储为其他属性,然后调用命名函数...myFunctions[myparam.onclick](myparam.clickParams) -
使用场景是一个 json 按钮数组,每个按钮都有自己的 javascript 调用,但是对于每个按钮,我还想运行一个通用的 javascript 调用,而不需要将所有重复的调用放入大批。我想另一种方法是为附加功能使用第二个单独的 jquery 点击处理程序。我希望能够解析字符串,这样我也可以避免必须围绕 javascript 构建整个 function(){} 调用。
-
也可以使用
data-属性做很多事情。例如,看看整个引导库是如何工作的
标签: javascript jquery html