在jQuery对象上调用一个函数,作为参数传递给另一个函数

时间:2016-06-15 14:31:40

标签: javascript jquery function parameter-passing

我正在使用另一个Stack Overflow帖子中的this answer,使用fadeIn方法逐个淡入多个元素,并使用fadeOut反向淡出。例如,使用fadeIn

$("#container").children().each(function(index) {
    $(this).delay(400 * index).fadeIn(300);
});

由于我将多次使用代码并使用不同的动画,我将它放入一个函数中,其中迭代的jQuery对象,延迟和要执行的动画作为参数传递:

function animateOneByOne(elements, delay, animation) {
    elements.each(function(index) {
        $(this).delay(delay*index).animation();
    });
}

使用类似的东西调用:

animateOneByOne($("#introelements").children(), 400, function() { fadeIn(300); });

我现在意识到这不起作用,因为animation对象中没有$(...).delay(...)函数。

将这段代码放入函数中是否有一种很好的方法?

1 个答案:

答案 0 :(得分:0)

在写这个问题的过程中,我发现了一个简单的解决方案,其中我将作为参数传递的函数更改为将单个元素作为参数:

function animateOneByOne(elements, delay, animation) {
    elements.each(function(index) {
        animation($(this).delay(delay * index));
    });
}

使用类似的东西调用:

animateOneByOne($("#introelements").children(), 400, function(element) { element.fadeIn(300); });

(我发布了这个,以防其他人遇到类似的问题以及有更好的解决方案。)