setTimeout を使った時に thisが効かなかったので、効くようにする書き方メモ。
なぜそうなるか理解できてません。。
See the Pen setTimeout内で this を取得できるようにする by takapen (@takapen) on CodePen.
html
btn01(だめ)
btn02(いける)
btn03(いける)
jQuery
$(function(){
//だめ
var btn01 = $('#js-btn01');
btn01.on('click',function(){
$(this).fadeOut();
setTimeout(function(){
$(this).fadeIn();
},2000);
});
//いける
var btn02 = $('#js-btn02');
btn02.on('click',function(){
var $this = $(this);
$this.fadeOut();
setTimeout(function(){
$this.fadeIn();
},2000);
});
//いける
var btn03 = $('#js-btn03');
btn03.on('click',function(){
var $this = $(this);
$this.fadeOut();
setTimeout($.proxy(function(){
$this.fadeIn();
}, this), 2000);
});
});