2011-02-23 93 views
3

我有兩個效果,我想要一個接一個地運行,但我無法弄清楚如何將$(this)傳遞給第一個效果的回調。

這是我的時刻:

if($(this).hasClass('flag')) { 
    $('someElement').slideUp(); 
    $(this).slideDown(); 
} 

但我要的是對了slideDown運行效果基本show完成,即後。

if($(this).hasClass('flag')) { 
    $('someElement').slideUp(function() { 
     $(this).slideDown(); 
    }); 
} 

除了$(this)通過這一階段現指someElement而不是按計劃所以不起作用。

我該如何參考我的原始element.flag。我嘗試使用$this = $(this)但我認爲我必須有錯誤的語法。

任何想法?

回答

5

保存參考。

if($(this).hasClass('flag')) { 
    var el = this; 
    $('someElement').slideUp(function() { 
     $(el).slideDown(); 
    }); 
} 
3

緩存像這樣... 只是不要忘了var

var $this = $(this); 
if($this.hasClass('flag')) { 
    $('someElement').slideUp(function() { 
     $this.slideDown(); 
    }); 
} 
+0

感謝你們 - 所有這些工作,但@meder最先到達那裏。 – gpr 2011-02-23 04:25:10

+1

該var做了詭計,謝謝指出。 – cdanzmann 2016-09-27 13:54:20

1

給這一個鏡頭:

var self = $(this); 
if(self.hasClass('flag')) { 
    $('someElement').slideUp(function() { 
     self.slideDown(); 
    }); 
} 
+0

謝謝你們 - 這些都有效,但@meder先到了那裏。 – gpr 2011-02-23 04:26:56