我试图调用已经与事件侦听器一起使用的函数。JQuery将值传递给函数接受事件对象参数
比如我把我的事件侦听器:
$('#country_choice').on('change', {opt: 1}, revealOption);
和revealOption函数包含switch语句:
function revealOption(event){
var n = event.data.opt;
switch(n) {
case 1:
// 1 reveal city
$('#city_form').removeClass('hidden');
//alert("Reveal city");
break;
case 2:
// 2 reveal produce
$('#prod_form').removeClass('hidden');
//alert("Reveal prod");
break;
case 3:
// 3 reveal all
$('#city_form').removeClass('hidden');
$('#prod_form').removeClass('hidden');
alert("Reveal all");
break;
}
}
不过,我想能中的其他使用此功能函数不是事件处理程序的一部分。
function dev(){
revealOption(3);
}
我宁愿避免编写另一个函数来完成相同的任务,但很难发现它是否可行。
我在研究SO时发现的最接近的问题是function handle jQuery event and parameter?,但是这涉及将事件对象传递给另一个函数,而不传递一个值。
任何帮助将感激地赞赏:)
这就是为什么添加自定义数据到事件的一个很好的例子几乎是一个反模式。我建议重构你的代码,以便直接传递参数给函数,例如'function revealOption(opt)'。为事件处理函数提供函数引用是JS提供的一些很好的语法糖,但是当需要更改该函数的作用域时,可以快速将自己绑定在节点上。 –