我将此代码运行起来。但是,我一直在考虑这是否是实施关闭的候选者。听我说。
我想这样做:
$(".trigger").click(function() {
$(this).parents(".heading").next(".list").slideToggle("slow", function() {
$(this).toggleClass("close");
$(this).parents(".heading").toggleClass("close");
});
});
执行位于slideToggle
函数this
旁边的问题似乎并未指向trigger
。我找到了一个解决这个问题的工作:
$(".trigger").click(function() {
var self = $(this);
$(this).parents(".heading").next(".list").slideToggle("slow", function() {
$(self).toggleClass("close");
$(self).parents(".heading").toggleClass("close");
});
});
有效。但我想知道它是否适合实施关闭?并在此过程中提高代码质量。谢谢。
答案 0 :(得分:3)
封闭在这里并不特别有用,因为它的目标是不同的。但是你可以使用箭头函数的行为,它使用词汇上下文:
$(".trigger").click(function() {
$(this).parents(".heading").next(".list").slideToggle("slow", () => {
$(this).toggleClass("close");
$(this).parents(".heading").toggleClass("close");
});
});
现在,this
不会被改变:箭头函数不知道任何上下文绑定,只是坚持词汇上下文,这意味着this
与this
相同click
{1}}回调函数。