我刚刚在我的新项目中遇到了一个小问题。基本上,有一个帖子页面和一些作为页面一部分从后端传来的评论。我想要做的就是为这些评论提供一些JavaScript逻辑。我所做的就是提供:
class Comment {
constructor(comment) {
console.log("Creating comment object...");
$(comment).find(".vote").click(this.toggle_vote);
$(comment).find(".action.reply").click(this.toggle_reply);
}
toggle_vote() {
// Context here is `span.reply`, not Comment instance,
// but I want to access class members
if ($(this).is(".voted")) {
$(this).removeClass("voted");
return;
}
$(this).addClass("voted");
$(this).siblings().first().removeClass("voted");
}
// ...
}
以下问题涉及jQuery的回调函数。当我将类成员传递给jQuery回调时,在调用过程中,jQuery模拟了其上下文,因此
this
是span.reply
,而不是Comment
实例。重点是我希望能够访问实际的Comment实例。声明:我完全不懂前端,因此可能需要一些严格的解释来解决这个问题,谢谢!
toggle_vote
函数似乎期望this
是 DOM 元素? - Bergi….click((e) => this.toggleReply(e.currentTarget))
或类似的方式。 - Bergi