Skip to content

Commit c6d53db

Browse files
authored
Merge pull request #65 from eisbehr-/force
added forced public function
2 parents e1412f0 + fd079ab commit c6d53db

File tree

1 file changed

+33
-8
lines changed

1 file changed

+33
-8
lines changed

jquery.lazy.js

+33-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*!
2-
* jQuery & Zepto Lazy - v1.7.3
2+
* jQuery & Zepto Lazy - v1.7.4.rc1
33
* http://jquery.eisbehr.de/lazy/
44
*
55
* Copyright 2012 - 2016, Daniel 'Eisbehr' Kern
@@ -220,6 +220,17 @@
220220
}));
221221
};
222222

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+
223234
// load initial items
224235
_lazyLoadItems();
225236

@@ -283,9 +294,10 @@
283294
* the 'lazy magic' - check all items
284295
* @access private
285296
* @param {boolean} [allItems]
297+
* @param {object} [forced]
286298
* @return void
287299
*/
288-
function _lazyLoadItems(allItems) {
300+
function _lazyLoadItems(allItems, forced) {
289301
// skip if no items where left
290302
if( !items.length ) {
291303
// destroy instance if option is enabled
@@ -296,17 +308,18 @@
296308
return;
297309
}
298310

299-
var loadTriggered = false,
311+
var elements = forced || items,
312+
loadTriggered = false,
300313
imageBase = config.imageBase || "",
301314
srcsetAttribute = config.srcsetAttribute,
302315
handledName = config.handledName;
303316

304317
// loop all available items
305-
for( var i = 0; i < items.length; i++ ) {
318+
for( var i = 0; i < elements.length; i++ ) {
306319
// 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]),
310323
attribute = element.attr(config.attribute),
311324
elementImageBase = element.attr(config.imageBaseAttribute) || imageBase,
312325
customLoader = element.attr(config.loaderAttribute);
@@ -472,7 +485,7 @@
472485
.attr(_src, imageSrc ? imageBase + imageSrc : null);
473486

474487
// call after load even on cached image
475-
imageObj.complete && imageObj.load(); // jshint ignore : line
488+
imageObj.complete && imageObj.trigger(_load); // jshint ignore : line
476489
}
477490
}
478491

@@ -707,6 +720,18 @@
707720
return _instance;
708721
};
709722

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+
710735
// noinspection JSUndefinedPropertyAssignment
711736
/**
712737
* force lazy to load all available items right now

0 commit comments

Comments
 (0)