<div class="parent">
<a class="child" id="child">Child</a>
</div>
<div class="parent2">
<a class="child2" id="child2">Child with argument</a>
</div>
child.addEventListener('click', Handling);
child2.addEventListener('click', Handling(3));
function Handling(arg) {
var _this = this;
if (_this.parentElement) {
alert(_this.parentElement);
}
else {alert("no parent, arg="+arg);}
}
https://jsfiddle.net/Nata_Hamster/o7xf5j9s/
如果调用不带参数的处理函数,则返回父级。当您尝试使用参数调用时,它会丢失。
在第一种情况下,您正确设置了点击功能。在第二种情况下,您将此函数的结果设置为单击,即
undefined. 因此,当您尝试调用它时,您会得到TypeError. 如果要使用参数调用回调,请使用Handling.bind(child2, 3). 这将使用第一个参数中设置的上下文创建一个新函数,其余的只是你函数的参数。