2016-02-09 6 views
1

Я пытаюсь написать функцию JQuery, которая будет соответствовать высотам всех изображений на странице с тем же именем класса.jQuery изображения с равной высотой

Это работает как ожидалось, если подключение к интернету будет порядочным. Если для загрузки изображения требуется некоторое время, он не может отображать изображения. Я предполагаю, что функция определяет изображение как высоту 0px и устанавливает это для всех.

Как я могу обойти это?

Большое спасибо

function equalizeClass(className) { 
    var equaliserHeight = 0; 
    var height = 0; 
    var i = 0; 
    $('.'+className).each(function() { 
     $(this).imagesLoaded(function() { 
      i++; 
      height = $(this).height(); 
      if(height>equaliserHeight) { 
       equaliserHeight = height; 
      } 
     }); 
    }); 
    $('.'+className).css("height", equaliserHeight); 
} 

$(function() { 
equalizeClass('products-page-product-img'); // Equalize product list thumbnails 
}); 
+0

Ключ будет вам может понадобиться, чтобы проверить, когда все изображения будут загружены, то вам нужно сделать выравниванию. –

+0

Я добавил imagesLoaded() плагин из desandro.com, который сглаживался, чтобы быть тем, что мне нужно. Но теперь изображения вообще не отображаются, и на моей консоли появляется следующая ошибка. Может быть, это связано с моей начальной загрузкой? - Uncaught TypeError: Не удается прочитать свойство defaultView из undefined –

+0

Можете ли вы показать фрагмент с плагином, пожалуйста? –

ответ

2

Просто ждать загрузки страницы. Заменить:

$(function() { 
    equalizeClass('products-page-product-img'); 
}); 

с:

$(window).load(function() { 
    equalizeClass('products-page-product-img'); 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^