添加回调函数

时间:2012-09-21 17:35:39

标签: jquery function callback

有人会介意给我一只手并帮我看看这个函数并解释我如何在最后一个元素完成淡入后添加和执行回调函数。我不确定我是怎样的#&# 39;我想把它装进或重做代码以获得我正在寻找的结果。

代码在这里Fiddle

谢谢

2 个答案:

答案 0 :(得分:2)

这不是一个完美的答案,但一种方法只是评估是否存在next()元素并重新调用该函数或执行不同的操作:

function elFadeIn(elem) {
    elem.fadeIn('slow', function() {
        if ($(this).next().length) {
            elFadeIn($(this).next());
        }
        else {
            alert('finished');
        }
    });
}​

JS Fiddle demo

一种稍微漂亮的写作方式是:

function elFadeIn(elem, callback) {
    elem.fadeIn('slow', function() {
        var next = $(this).next(),
            action = next.length ? elFadeIn(next) : alert('finished!');
    });
}​

JS Fiddle demo

答案 1 :(得分:1)

使用回调只不过是将函数作为参数传递,并在某个时间调用该函数。作为旁注,我怀疑你想要所有.item元素,但.next并不关心原始选择器。 http://jsfiddle.net/4Pvmq/6/

$(function(){
    elFadeIn('.item', function() {
        alert("done");
    });
});

function elFadeIn(selector, callback) {
    var $items = $(selector);

    // this is the function that's going to be called recursively
    (function fade(i) {
        var $elem = $items.eq(i);

        if($elem.length) {  // there is an element
            $elem.fadeIn('slow', function() {  // fade it
                fade(i + 1);
            });
        } else {  // no elements left
            callback();
        }
    })(0);  // start with first
}