Asu*_*sur 5 javascript dom-events
如何在不使用Function.prototype.bind的情况下将多个参数与事件对象一起传递给事件处理程序?
事件处理程序中有一个闭包.
以下基本代码不起作用,
Function.prototype.bind
function eventHandler(eventObj + arguments) {
return function(){}; //a closure
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何将事件对象和其他参数同时传递给事件处理程序.
更新:
我甚至尝试在addEventListener中使用匿名函数.这样做,似乎控件从未到达回调函数内的闭包.
element.addEventListener("click", function(e){
var data = {'event':e, 'args':arguments};
eventHandler(data);
}, false);
function eventHandler(data) {
return function(){ //this function is never executed
console.log(JSON.stringify(data));
};
}
Run Code Online (Sandbox Code Playgroud)
JMM*_*JMM 18
因此,如果我理解正确,您希望向元素添加事件侦听器,并配置一些在您添加侦听器时存在的其他数据,以便在调用时传递给侦听器.如果这就是你想要做的,你只需要一个合适的关闭.这样的事情,假设您想要将其他数据存储在对象中:
var extra_data = {one: "One", two: "Two"};
var make_handler = function (extra_data) {
return function (event) {
// event and extra_data will be available here
};
};
element.addEventListener("click", make_handler(extra_data));
Run Code Online (Sandbox Code Playgroud)