我有一个函数可以从页面中删除li
元素(还有尚未创建的元素):
const removeLi = function () {
console.log(this);
$(this).parent().remove()
};
$("ul").on("click",'button.delete', removeLi);
有效。
但是,在我尝试通过apply()
方法执行此操作之前,我注意到一些我不理解的事情。
a)为什么有效:
const removeLi = function () {
console.log(this);
this.parent().remove()
};
$("ul").on("click",'button.delete', function () {
const $this = $(this);
console.log($this);
removeLi.apply($this);
});
将removeLi
更改为箭头功能后,不是吗?
const removeLi = ()=> {
console.log(this);
this.parent().remove()
};
console.log(this)
给出window
并且控制台抛出错误?
b)为什么这种构造无法工作:
const removeLi = ()=>{
console.log(this);
$(this).parent().remove()
};
$("ul").on("click",'button.delete', function () {
console.log(this);
removeLi()
});
如果箭头功能未更改this
的上下文,则应该起作用,对吗?
请帮助我理解。
预先感谢