Lazy Load + Isotope
J'ai passé beaucoup de temps à essayer d'obtenir des isotopes et le chargement paresseux à travailler ensemble.
La question: paresseux des travaux de chargement si l'utilisateur fait défiler vers le bas, cependant, si l'utilisateur utilise les filtres, les objets sur le dessus, mais les images ne se chargent pas.
Ici est quelqu'un avec le même problème, mais il semble qu'il fixe. J'ai essayé plusieurs choses mais encore ne pourrais pas le faire fonctionner.
Voici les discussions https://github.com/tuupola/jquery_lazyload/issues/51
Merci beaucoup pour votre aide
Le code que j'utilise est comme suit.
jQuery(document).ready(function($) {
$('#big_container .media_block img').each(function(index) {
var item_height = $(this).attr("height");
$(this).parent().parent().css("height",item_height);
});
$('#big_container').isotope({
itemSelector : '.item',
layoutMode : 'masonry',
masonry: {
columnWidth: 5,
},
sortBy : 'date',
sortAscending : false,
getSortData : {
date : function ( $elem ) {
return $elem.find('.date').text(); //Date format should be [Y-m-d H:i]
},
views : function( $elem ) {
return parseInt( $elem.attr('data-views'), 10 );
},
//featured : function ( $elem ) {
//return $elem.attr('data-featured');
// },
rates : function( $elem ) {
return parseInt( $elem.attr('data-rates'), 10 );
},
comments : function( $elem ) {
return parseInt( $elem.attr('data-comments'), 10 );
}
}
});
$('#sort-by li a').click(function(){
var $this = $(this);
if ($(this).parent().hasClass('selected') ) {
return false;
}
var $optionSet = $this.parents();
$optionSet.find('.selected').removeClass('selected');
$this.addClass('selected');
var sortName = $(this).attr('href').slice(1);
$('#big_container').isotope({ sortBy : sortName });
return false;
});
});
Comme dans votre même question hier, il est difficile de voler en aveugle pour fournir un travail de répondre sans être capable de voir les devtools comment les choses se comporter. Mettre en place un jsfiddle ou un lien vers votre bac à sable en ligne.
OriginalL'auteur J.D | 2012-10-01
Vous devez vous connecter pour publier un commentaire.
Pour obtenir des isotopes du tri/filtrage de travailler avec lazyload vous devez faire ce qui suit.
Explication
Selon les docs ( http://www.appelsiini.net/projects/lazyload )
Avec un isotope trier/liste filtrée, l'ordre des pages est certainement différente de l'HTML, donc nous devons ajuster notre
failure_limit
.Comme vous pouvez le voir, nous stockons l'objet jQuery afin que nous puissions utiliser son
length-1
que notre failure_limit. Si vous êtes curieux de savoir pourquoi il estlength-1
, c'est à cause de la case dans lazyload de la méthode de mise à jour.Lazy load sur d'autres événements
Si vous n'êtes pas le déclenchement de votre lazyloads sur de défilement, vous devez remplacer le "scroll" déclencheur pour n'importe quel événement que vous utilisez.
Démo
http://jsfiddle.net/arthurc/ZnEhn/
Code de votre site
J'ai stocké certains jQuery objets dans des variables comme ils ont besoin d'être ré-utilisé.
Merci @AllInOne, ont fixé.
Je ne comprends pas la raison pour laquelle vous avez utilisé les Mathématiques.max au lieu de simplement en utilisant seulement $images.longueur-1. Pourriez-vous expliquer pourquoi? Merci
n'importe qui peut expliquer la raison pour laquelle pour les Mathématiques.max ici?
Les mathématiques.max est utilisé pour arrêter ça va en dessous de zéro
OriginalL'auteur acarabott