функции обратного вызова изотопов - PullRequest
3 голосов
/ 21 февраля 2012

Изотоп предоставляет два места, где вы можете предоставить функции обратного вызова:

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

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

Я не знаю, в чем разница между этими двумя - они оба кажутся вызванными ровно один раз, после того, как макет завершен. Я просмотрел документы, но все, что я могу найти, это

Аналогично обратному вызову, onLayout - это функция, которая будет запускаться после каждого прохождения экземпляра Isotope через его логику компоновки.

1 Ответ

5 голосов
/ 21 февраля 2012

Согласно исходному коду разницы нет. По завершении макета можно вызвать три функции обратного вызова: одну, переданную в последнем аргументе isotope(), одну, переданную в опции onLayout, и одну, переданную в complete члена опции animationOptions.

Соответствующие части источника:

// [...]    
} 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() вызывает каждый из них последовательно, если это функция.

...