Написание функций обратного вызова - PullRequest
7 голосов
/ 18 сентября 2010

Я использую jQuery для написания таких вещей:

    $('#current_image').fadeOut(function(){
        $('#current_image').attr('src',newImage).show();
    });

Это прекрасно, после завершения fadeOut выполняется вложенный бит.

Я хотел бы сделатьмоя собственная функция, которая заменит fadeOut.Как будет выглядеть моя функция, чтобы этот код работал?

    $('#current_image').customFadeOut(function(){
        $('#current_image').attr('src',newImage).show();
    });

1 Ответ

3 голосов
/ 18 сентября 2010

Ключ просто передает ссылку на функцию определенному вами прототипу и привязывает эту переданную функцию к $.animate или к любой функции анимации jquery, которую вы используете для этого внутри.

HTML:

<div id="blah" style="color:#fff; opacity:1; background:black; height:50px; position:relative; ">fsdljfdsjfds</div>
<a id="click" href="#">fjsd</a>

JS:

$.fn.customFadeOut = function (callback) {
    return $(this).animate({
        opacity: 0.25,
        fontSize: "3em",
        height: 'toggle'
    }, 5000, function () {
        callback.apply(this)
    });

}

$('#click').click(function () {
    $('#blah').customFadeOut(function () {
        alert('hi')

    })

})​

Live Demo

...