Передать функцию анимации в качестве параметра - PullRequest
2 голосов
/ 28 ноября 2011

Я пишу простую функцию для анимации div (в этом примере она называется «helpBox»). Этот div будет появляться и скользить вниз, когда он будет выполнен.

Тем не менее, я хотел бы быть в состоянии передать тип анимации, которую я хотел бы сделать, наряду с затуханием. Я исчезаю, манипулируя атрибутом opactity, но скатываюсь вниз с помощью slideDown (). Дело в том, что я хотел бы иметь возможность указать конкретную анимацию, которую нужно выполнять вместе с затуханием (т. Е. Возможно, slideUp (), чтобы снова скрыть окно справки).

showHelp: function (helpBox, myAnimation) {
        if (!helpBox.is(':visible')) {
            helpBox.css('opacity', 0)
               .slideDown('slow') //have this function as the parameter (i.e. myAnimation)
               .animate
               (
                    { opacity: 1 },
                    { queue: false, duration: 'slow' }
               );
        }
    }

Как видите, я бы хотел заменить жестко закодированный .slideDown () на функцию, переданную в (myAnimation). Я не знаю, как это назвать:

showHelp($('#myHelpBox'), function() { /*pass the animation in somehow*/ });

1 Ответ

2 голосов
/ 28 ноября 2011

Вы можете передать параметр в виде строки (имя функции) и попробовать это.

showHelp: function (helpBox, myAnimation) {
        if (!helpBox.is(':visible')) {
            helpBox.css('opacity', 0)[myAnimation]('slow')
               .animate
               (
                    { opacity: 1 },
                    { queue: false, duration: 'slow' }
               );
        }
    }
...