|
1 | 1 | /*!
|
2 |
| - * jQuery & Zepto Lazy - v1.7.3 |
| 2 | + * jQuery & Zepto Lazy - v1.7.4.rc1 |
3 | 3 | * http://jquery.eisbehr.de/lazy/
|
4 | 4 | *
|
5 | 5 | * Copyright 2012 - 2016, Daniel 'Eisbehr' Kern
|
|
220 | 220 | }));
|
221 | 221 | };
|
222 | 222 |
|
| 223 | + // create function to force loading elements |
| 224 | + events.f = function(forcedItems) { |
| 225 | + for( var i = 0; i < forcedItems.length; i++ ) { |
| 226 | + var item = items.filter(forcedItems[i]); |
| 227 | + |
| 228 | + if( item.length ) { |
| 229 | + _lazyLoadItems(false, item); |
| 230 | + } |
| 231 | + } |
| 232 | + }; |
| 233 | + |
223 | 234 | // load initial items
|
224 | 235 | _lazyLoadItems();
|
225 | 236 |
|
|
283 | 294 | * the 'lazy magic' - check all items
|
284 | 295 | * @access private
|
285 | 296 | * @param {boolean} [allItems]
|
| 297 | + * @param {object} [forced] |
286 | 298 | * @return void
|
287 | 299 | */
|
288 |
| - function _lazyLoadItems(allItems) { |
| 300 | + function _lazyLoadItems(allItems, forced) { |
289 | 301 | // skip if no items where left
|
290 | 302 | if( !items.length ) {
|
291 | 303 | // destroy instance if option is enabled
|
|
296 | 308 | return;
|
297 | 309 | }
|
298 | 310 |
|
299 |
| - var loadTriggered = false, |
| 311 | + var elements = forced || items, |
| 312 | + loadTriggered = false, |
300 | 313 | imageBase = config.imageBase || "",
|
301 | 314 | srcsetAttribute = config.srcsetAttribute,
|
302 | 315 | handledName = config.handledName;
|
303 | 316 |
|
304 | 317 | // loop all available items
|
305 |
| - for( var i = 0; i < items.length; i++ ) { |
| 318 | + for( var i = 0; i < elements.length; i++ ) { |
306 | 319 | // item is at least in loadable area
|
307 |
| - if( allItems || _isInLoadableArea(items[i]) ) { |
308 |
| - var element = $(items[i]), |
309 |
| - tag = _getElementTagName(items[i]), |
| 320 | + if( allItems || forced || _isInLoadableArea(elements[i]) ) { |
| 321 | + var element = $(elements[i]), |
| 322 | + tag = _getElementTagName(elements[i]), |
310 | 323 | attribute = element.attr(config.attribute),
|
311 | 324 | elementImageBase = element.attr(config.imageBaseAttribute) || imageBase,
|
312 | 325 | customLoader = element.attr(config.loaderAttribute);
|
|
472 | 485 | .attr(_src, imageSrc ? imageBase + imageSrc : null);
|
473 | 486 |
|
474 | 487 | // call after load even on cached image
|
475 |
| - imageObj.complete && imageObj.load(); // jshint ignore : line |
| 488 | + imageObj.complete && imageObj.trigger(_load); // jshint ignore : line |
476 | 489 | }
|
477 | 490 | }
|
478 | 491 |
|
|
707 | 720 | return _instance;
|
708 | 721 | };
|
709 | 722 |
|
| 723 | + // noinspection JSUndefinedPropertyAssignment |
| 724 | + /** |
| 725 | + * force element(s) to load directly, ignoring the viewport |
| 726 | + * @access public |
| 727 | + * @param {Array|object|string} items |
| 728 | + * @return {LazyPlugin} |
| 729 | + */ |
| 730 | + _instance.force = function(items) { |
| 731 | + _events.f && _events.f($.type(items) === "string" ? $(items) : items); // jshint ignore : line |
| 732 | + return _instance; |
| 733 | + }; |
| 734 | + |
710 | 735 | // noinspection JSUndefinedPropertyAssignment
|
711 | 736 | /**
|
712 | 737 | * force lazy to load all available items right now
|
|
0 commit comments