Передача $ (this) обратному вызову в jQuery? - PullRequest
3 голосов
/ 23 февраля 2011

У меня есть два эффекта, которые я хочу запустить один за другим, но я не могу понять, как передать $(this) обратному вызову из первого эффекта.

Вот что у меня сейчас:

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

Но я хочу, чтобы слайд-даун запускался после того, как слайд-ап завершен, т.е.

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

За исключением того, что $(this) к этому этапу теперь относится к someElement, и поэтому не работает, как планировалось.

Как мне обратиться к моему оригиналу element.flag. Я пытался использовать $this = $(this), но я думаю, что у меня неправильный синтаксис.

Есть идеи?

Ответы [ 3 ]

5 голосов
/ 23 февраля 2011

Сохранить ссылку.

if($(this).hasClass('flag')) {
    var el = this;
    $('someElement').slideUp(function() {
        $(el).slideDown();
    });
}
3 голосов
/ 23 февраля 2011

кэшируйте это так ... только не забудьте var.

var $this = $(this);
if($this.hasClass('flag')) {
    $('someElement').slideUp(function() {
        $this.slideDown();
    });
}
1 голос
/ 23 февраля 2011

Дайте этому шанс:

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