将$(this)传递给jQuery中的回调?

时间:2011-02-23 03:54:32

标签: jquery parameters callback this

我想要一个接一个地运行两个效果,但我无法弄清楚如何将$(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),但我认为我的语法必须错误。

有什么想法吗?

3 个答案:

答案 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();
    });
}