Javascript .bind()与事件处理程序
假设我有以下简化的函数Javascript .bind()与事件处理程序,javascript,javascript-events,function-binding,Javascript,Javascript Events,Function Binding,假设我有以下简化的函数 var ex = document.getElementById('exampleElement'), data = { foo: 'Sample text' }; ex.addEventListener('click', function(evt, d) { evt.stopPropagation(); this.innerHTML = d.foo; }.bind(ex, null, data)); 我意识到将ex绑定
var ex = document.getElementById('exampleElement'),
data = {
foo: 'Sample text'
};
ex.addEventListener('click', function(evt, d) {
evt.stopPropagation();
this.innerHTML = d.foo;
}.bind(ex, null, data));
我意识到将ex
绑定到这个
在这种特殊情况下有点多余,但是如何绑定数据
参数,并且仍然保持事件
参数不被破坏
我似乎到处都找不到答案。根据
arg1,arg2
调用目标函数时,的参数在前面加上提供给绑定函数的参数
var ex = document.getElementById('exampleElement'),
data = {
foo: 'Sample text'
};
ex.addEventListener('click', function(evt, d) {
evt.stopPropagation();
this.innerHTML = d.foo;
}.bind(ex, null, data));
这意味着您的当前值将出现在事件对象之前。请参阅此小提琴以了解示例:
var clickme=document.querySelector(“clickme”);
clickme.addEventListener(“单击”),函数(值、事件){
var newDiv=document.createElement(“div”);
newDiv.innerHTML=value+“
”+event.target.toString();
文件.body.appendChild(newDiv);
}.bind(单击“当前值”);
这个d
参数是什么?您无法控制如何调用该函数。为什么不使用闭包呢?d是数据,在bind函数中参数化了。不行!这为我解决了一切。非常感谢您的研究!