组合 jQuery 代码 - ImagesLoaded + Shuffle.js
Combining jQuery code - ImagesLoaded + Shuffle.js
我的目标是将 setupSorting
函数放在 ImageLoad
函数中。它们在分开时工作 (here), but sorting fails when combined (here)。
这个:
$(document).ready (function(){
/* reshuffle when user clicks a filter item */
$('.filter-tags a').click(function (e) {
e.preventDefault();
// set active class
$('.filter-tags a').removeClass('active');
$(this).addClass('active');
// get group name from clicked item
var groupName = $(this).attr('data-group');
// reshuffle grid
$grid.shuffle('shuffle', groupName );
});
需要进入其中:
var ImageLoad = (function( $, imagesLoaded ) {
var $shuffle = $('.masonry-gallery'),
$imgs = $shuffle.find('img'),
$loader = $('#loader'),
sizer = document.getElementById('#shuffle-sizer'),
imgLoad,
init = function() {
// Create a new imagesLoaded instance
imgLoad = new imagesLoaded( $imgs.get() );
// Listen for when all images are done
// will be executed even if some images fail
imgLoad.on( 'always', onAllImagesFinished );
},
onAllImagesFinished = function( instance ) {
if ( window.console && window.console.log ) {
console.log( instance );
}
// Hide loader
$loader.addClass('hidden');
// Adds visibility: visible;
$shuffle.addClass('images-loaded');
// Initialize shuffle
$shuffle.shuffle({
sizer: sizer,
itemSelector: '.gallery-photo'
});
};
return {
init: init
};
}( jQuery, window.imagesLoaded ));
$(document).ready(function() {
ImageLoad.init();
});
最终目的是像这个页面,只需要排序:http://vestride.github.io/Shuffle/images/
经过几个小时的试验,终于搞定了。你是对的,我没有打电话给它。我也忘了在合并时将 $grid.shuffle
更改为 $shuffle.shuffle
。
这仍然没有成功,所以我更改了 setupSorting
函数(随后,一些 html)以更接近作者的 (here)
生成的代码有效!
/////////////////////// IMAGESLOADED & SHUFFLE //////////////////////
var ImageLoad = (function( $, imagesLoaded ) {
var $shuffle = $('.masonry-gallery'),
$filterOptions = $('.filter-list'),
$imgs = $shuffle.find('.gallery-photo img'),
$loader = $('#loader'),
sizer = document.getElementById('#shuffle-sizer'),
imgLoad,
init = function() {
// None of these need to be executed synchronously
setTimeout(function() {
setupSorting();
}, 10);
// Create a new imagesLoaded instance
imgLoad = new imagesLoaded( $imgs.get() );
// Listen for when all images are done
// will be executed even if some images fail
imgLoad.on( 'always', onAllImagesFinished );
},
onAllImagesFinished = function( instance ) {
if ( window.console && window.console.log ) {
console.log( instance );
}
// Hide loader
$loader.addClass('hidden');
// Adds visibility: visible;
$shuffle.addClass('images-loaded');
// Initialize shuffle
$shuffle.shuffle({
sizer: sizer,
itemSelector: '.gallery-photo'
});
},
// Set up button clicks
setupSorting = function() {
var $btns = $filterOptions.children();
$btns.on('click', function() {
var $this = $(this),
isActive = $this.hasClass( 'active' ),
group = isActive ? 'all' : $this.data('group');
// Hide current label, show current label in title
if ( !isActive ) {
$('.filter-list .active').removeClass('active');
}
$this.toggleClass('active');
// Filter elements
$shuffle.shuffle( 'shuffle', group );
});
$btns = null;
};
return {
init: init
};
}( jQuery, window.imagesLoaded ));
$(document).ready(function() {
ImageLoad.init();
});
您可以看到完整的 fiddle (here)。
我的目标是将 setupSorting
函数放在 ImageLoad
函数中。它们在分开时工作 (here), but sorting fails when combined (here)。
这个:
$(document).ready (function(){
/* reshuffle when user clicks a filter item */
$('.filter-tags a').click(function (e) {
e.preventDefault();
// set active class
$('.filter-tags a').removeClass('active');
$(this).addClass('active');
// get group name from clicked item
var groupName = $(this).attr('data-group');
// reshuffle grid
$grid.shuffle('shuffle', groupName );
});
需要进入其中:
var ImageLoad = (function( $, imagesLoaded ) {
var $shuffle = $('.masonry-gallery'),
$imgs = $shuffle.find('img'),
$loader = $('#loader'),
sizer = document.getElementById('#shuffle-sizer'),
imgLoad,
init = function() {
// Create a new imagesLoaded instance
imgLoad = new imagesLoaded( $imgs.get() );
// Listen for when all images are done
// will be executed even if some images fail
imgLoad.on( 'always', onAllImagesFinished );
},
onAllImagesFinished = function( instance ) {
if ( window.console && window.console.log ) {
console.log( instance );
}
// Hide loader
$loader.addClass('hidden');
// Adds visibility: visible;
$shuffle.addClass('images-loaded');
// Initialize shuffle
$shuffle.shuffle({
sizer: sizer,
itemSelector: '.gallery-photo'
});
};
return {
init: init
};
}( jQuery, window.imagesLoaded ));
$(document).ready(function() {
ImageLoad.init();
});
最终目的是像这个页面,只需要排序:http://vestride.github.io/Shuffle/images/
经过几个小时的试验,终于搞定了。你是对的,我没有打电话给它。我也忘了在合并时将 $grid.shuffle
更改为 $shuffle.shuffle
。
这仍然没有成功,所以我更改了 setupSorting
函数(随后,一些 html)以更接近作者的 (here)
生成的代码有效!
/////////////////////// IMAGESLOADED & SHUFFLE //////////////////////
var ImageLoad = (function( $, imagesLoaded ) {
var $shuffle = $('.masonry-gallery'),
$filterOptions = $('.filter-list'),
$imgs = $shuffle.find('.gallery-photo img'),
$loader = $('#loader'),
sizer = document.getElementById('#shuffle-sizer'),
imgLoad,
init = function() {
// None of these need to be executed synchronously
setTimeout(function() {
setupSorting();
}, 10);
// Create a new imagesLoaded instance
imgLoad = new imagesLoaded( $imgs.get() );
// Listen for when all images are done
// will be executed even if some images fail
imgLoad.on( 'always', onAllImagesFinished );
},
onAllImagesFinished = function( instance ) {
if ( window.console && window.console.log ) {
console.log( instance );
}
// Hide loader
$loader.addClass('hidden');
// Adds visibility: visible;
$shuffle.addClass('images-loaded');
// Initialize shuffle
$shuffle.shuffle({
sizer: sizer,
itemSelector: '.gallery-photo'
});
},
// Set up button clicks
setupSorting = function() {
var $btns = $filterOptions.children();
$btns.on('click', function() {
var $this = $(this),
isActive = $this.hasClass( 'active' ),
group = isActive ? 'all' : $this.data('group');
// Hide current label, show current label in title
if ( !isActive ) {
$('.filter-list .active').removeClass('active');
}
$this.toggleClass('active');
// Filter elements
$shuffle.shuffle( 'shuffle', group );
});
$btns = null;
};
return {
init: init
};
}( jQuery, window.imagesLoaded ));
$(document).ready(function() {
ImageLoad.init();
});
您可以看到完整的 fiddle (here)。