forEachParent (options, iterator) {
        _.isFunction(options) && (iterator = options, options = {});
        if (!_.isFunction(iterator) || !_.isObject(options)) { return; }

        var parent = this.parent(),
            grandparent = parent && _.isFunction(parent.parent) && parent.parent();

        while (parent && (grandparent || options.withRoot)) {
            iterator(parent);
            parent = grandparent;
            grandparent = grandparent && _.isFunction(grandparent.parent) && grandparent.parent();
        }
    }
Invokes the given iterator for every parent in the parent chain of the given element.

@param {Object} options - A set of options for the parent chain traversal.
@param {?Boolean} [options.withRoot=false] - Set to true to include the collection object as well.
@param {Function} iterator - The function to call for every parent in the ancestry chain.
@todo Cache the results