Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery get source element in callback

$('.myElem').live('click', function() {
    $(this).hide(500, function() {
        $(this).siblings('.myOtherElem').show();
    });
});

The above doesn't work because $(this) is no longer in correct scope in the callback. How do I pass my original source element into the callback?

like image 964
fearofawhackplanet Avatar asked Jan 22 '23 19:01

fearofawhackplanet


2 Answers

Actually your code should work.

To access this within an inner javascript method you might store the reference in the outer method scope:

$('.myElem').on('click', function() {

   var myElem = this;    
    $(this).hide(500, function() {
        $(myElem).siblings('.myOtherElem').show();
    });

});

However in most jQuery methods this is referring to the selector or element used:

$('.myElem').on('click', function() {
    // This refers to the clicked element
    $(this).hide(500, function() {
       // This refers to the clicked element as well 
       $(this).siblings('.myOtherElem').show();
    });    
});
like image 164
jantimon Avatar answered Feb 01 '23 06:02

jantimon


$('.myElem').live('click', function() { 
    var $this = $(this);
    $this.hide(500, function() { 
        $this.siblings('.myOtherElem').show(); 
    }); 
}); 
like image 22
John Hartsock Avatar answered Feb 01 '23 04:02

John Hartsock