我在这里有这个脚本,我想在我的ul元素上滑动,然后在执行上滑后,我想删除“开放”类,因为CSS原因。我做错了什么?
Content-Disposition: attachment; filename=foo
答案 0 :(得分:2)
this
是指全局对象,而不是事件目标。
两种解决方案:
使用箭头功能(保留this
上下文):
jQuery(this).parent().children("ul").slideUp(500);
setTimeout(() => {
var elementToRemove = jQuery(this).parent();
elementToRemove.removeClass("open");
}, 500);
或保存指向this
对象的链接:
jQuery(this).parent().children("ul").slideUp(500);
let that = this;
setTimeout(function(){
var elementToRemove = jQuery(that).parent();
elementToRemove.removeClass("open");
}, 500);
答案 1 :(得分:2)
解决方案1
使用bind将上下文传递给函数
jQuery(this).parent().children("ul").slideUp(500);
var func = function(){
var elementToRemove = jQuery(this).parent();
elementToRemove.removeClass("open");
}
setTimeout(func.bind(this),500);
解决方案2
jQuery(this).parent().children("ul").slideUp(500);
var self = this;
setTimeout(function(){
var elementToRemove = jQuery(self).parent();
elementToRemove.removeClass("open");
}, 500);
答案 2 :(得分:2)
jQuery动画允许在动画完成后将执行的文档中另外一个名为complete
的可选参数(回调)。您可以像这样使用它:
jQuery(this).parent()
.children("ul")
.slideUp(500, function(){
var elementToRemove = jQuery(this).parent();
elementToRemove.removeClass("open");
});