我想要一个接一个地运行两个效果,但我无法弄清楚如何将$(this)
传递给第一个效果的回调。
这就是我现在所拥有的:
if($(this).hasClass('flag')) {
$('someElement').slideUp();
$(this).slideDown();
}
但我想要的是在slideUp完成后运行slideDown,即
if($(this).hasClass('flag')) {
$('someElement').slideUp(function() {
$(this).slideDown();
});
}
除了$(this)
之前,该阶段现在指的是someElement
,因此无法按计划运作。
如何引用原始element.flag
。我尝试使用$this = $(this)
,但我认为我的语法必须错误。
有什么想法吗?
答案 0 :(得分:5)
保存参考。
if($(this).hasClass('flag')) {
var el = this;
$('someElement').slideUp(function() {
$(el).slideDown();
});
}
答案 1 :(得分:3)
像这样缓存它...... 就是不要忘记 var
。
var $this = $(this);
if($this.hasClass('flag')) {
$('someElement').slideUp(function() {
$this.slideDown();
});
}
答案 2 :(得分:1)
试一试:
var self = $(this);
if(self.hasClass('flag')) {
$('someElement').slideUp(function() {
self.slideDown();
});
}