如何将自定义参数传递给事件处理程序
How to Pass Custom Parameters to Event Handler
刚刚开始使用Dojo。我想传递几个自定义参数到事件处理程序。在jQuery中,你可以这样做:
$('#button').click({
customData: 'foo'
}, handlerFunction);
customData
可以像这样从handlerFunction
访问:
function handlerFunction(event) {
console.log(event.data.customData);
}
我正在将一些jQuery代码迁移到Dojo。如何将这些参数传递给Dojo事件处理程序?
一般来说,闭包允许你向函数传递"隐藏"参数:
function make_event_handler(customData){
return function(evt){
//customData can be used here
//just like any other normal variable
console.log(customData);
}
}
当在dojo中连接一个事件时:
dojo.connect(node, 'onclick', make_event_handler(17));
另一个我很喜欢的可能性是使用dojo。局部/dojo。为您创建闭包。
function event_handler(customData, evt){
///
}
dojo.connect(node, 'onclick', dojo.partial(event_handler, 17))
请注意,所有这些都需要在创建事件处理程序时记住传递额外的参数。我不知道你是否可以做一个更直接的JQuery代码翻译,因为这将需要额外的evt变量的消息,我不认为dojo做这个
Also:
this.connect(other, "onClick", function(e) {
/* other is accesible here still */
});
或:
this.connect(other, "onClick", dojo.hitch(this, "handler", other);
及其事件处理程序:
this.handler = function(other, evt){...}
相关文章:
- keyup事件处理程序更改焦点不适用于快速键入
- 提示使用服务器端事件处理程序激活JavaScript
- 将事件处理程序绑定到任何可能的事件
- 正在将事件处理程序添加到不存在的类
- 在循环中附加事件处理程序时出现浏览器性能问题
- 在同一个javascript事件处理程序中调用不同的函数
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 检查事件处理程序参数
- 实现延迟的jquery更改事件处理程序
- 如何使用Node.js在JavaScript模块文件之间使用事件处理程序
- 如何使jQuery的“bind”或“on”事件处理程序幂等
- 带有参数的Javascript事件处理程序
- Jquery事件处理程序仅适用于匿名函数
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 如何在jQuery事件处理程序中存储和重用超时
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 异步处理所有事件处理程序的方法
- jsplumb中的Click事件处理程序丢失“;这个“;对象
- 构造函数中的事件处理程序与构造函数外的事件处理函数的行为不同
- 如何在事件处理程序的回调中防止Default