同位素回调函数

3

Isotope提供了两个位置可以提供回调函数:

container.isotope({
    itemSelector: itemSelector,
    layoutMode: 'fitRows',
    onLayout: function() {alert('onLayout callback')}

}, function() {alert('anon callback')});

我不知道这两者之间有什么区别 - 它们似乎都在布局完成后被精确调用了一次。我查看了文档,但我找到的只有:

类似于回调函数,onLayout是一个函数,每当Isotope实例通过其布局逻辑运行时都会触发它。

所以它们的作用很相似,唯一的区别可能就在于命名方式不同。如果您需要使用它们,只要按照文档中的说明使用即可。

1个回答

5
根据源代码,没有区别。当布局完成时,可能会调用三个回调函数:传递给isotope()的最后一个参数中的函数、传递给onLayout选项中的函数和传递给animationOptions选项的complete成员中的函数。
源代码的相关部分如下:
// [...]    
} else if ( callback || onLayout || animOpts.complete ) {
    // has callback
    var isCallbackTriggered = false,
        // array of possible callbacks to trigger
        callbacks = [ callback, onLayout, animOpts.complete ],
        instance = this;
    triggerCallbackNow = true;
    // trigger callback only once
    callbackFn = function() {
        if ( isCallbackTriggered ) {
            return;
        }
        var hollaback;
        for (var i=0, len = callbacks.length; i < len; i++) {
            hollaback = callbacks[i];
            if ( typeof hollaback === 'function' ) {
                hollaback.call( instance.element, $elems );
            }
        }
        isCallbackTriggered = true;
    };
    // [...]
}  

如您所见,数组由三个可能的回调函数构建,并且如果是一个函数,callbackFn() 会按顺序依次调用每个函数。


一个令人印象深刻并且不容置疑的答案,做得好。我想知道为什么提供了3种不同的方法来完成相同的事情?看起来像是API设计不佳,虽然可能有历史(或其他)原因我不知道。 - Dónal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接