Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
458 views
in Technique[技术] by (71.8m points)

parameters - Passing $(this) to a callback in jQuery?

I have two effects that I want to run one after another, but I can't work out how to pass $(this) to the callback from the first effect.

This is what I have at the moment:

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

But what I want is for the slideDown to run after the slideUp is complete, ie.

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

Except $(this) by that stage now refers to someElement instead and so doesn't work as planned.

How do I refer to my original element.flag. I tried using $this = $(this) but I think I must have the syntax wrong.

Any ideas?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Save the reference.

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...