JQuery получить исходный элемент в обратном вызове - PullRequest
4 голосов
/ 07 июля 2010
$('.myElem').live('click', function() {
    $(this).hide(500, function() {
        $(this).siblings('.myOtherElem').show();
    });
});

Выше не работает, потому что $(this) больше не в правильной области в обратном вызове. Как передать исходный элемент в обратный вызов?

Ответы [ 3 ]

7 голосов
/ 07 июля 2010

На самом деле ваш код должен работать.

Для доступа к this во внутреннем методе javascript вы можете сохранить ссылку во внешней области метода:

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

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

});

Однако в большинстве методов jQuerythis относится к используемому селектору или элементу:

$('.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();
    });    
});
2 голосов
/ 07 июля 2010
$('.myElem').live('click', function() { 
    var $this = $(this);
    $this.hide(500, function() { 
        $this.siblings('.myOtherElem').show(); 
    }); 
}); 
0 голосов
/ 07 июля 2010
$('.myElem').live('click', function() {
    $(this).hide(500);
    $(this).siblings('.myOtherElem').show();
});
...