2016-01-21 2 views
0

Я пытаюсь добавить атрибуты ширины и высоты к моим изображениям; jQuery, который я использовал, работает в консоли, но не в связанном файле .js. Я пробовал это, и он не работает.Работает в консоли, но не в .js файле

$(document).ready(function() { 
    $('.media-box-image').each(function() { 

     var $width = $('.media-box-image').width(); 
     var $height = $('.media-box-image').height(); 
     var $this = $(this).find('img'); 

     $this.attr('width', $width); 
     $this.attr('height', $height); 
    }); 
}); 

Я также попытался это, но он также не работал

$(document).ready(function() { 
    $('.media-box-image').each().on('load', function() { 

     var $width = $('.media-box-image').width(); 
     var $height = $('.media-box-image').height(); 
     var $this = $(this).find('img'); 

     $this.attr('width', $width); 
     $this.attr('height', $height); 
    }); 
}); 

Я проверил консоль, но кажется, что все будет в порядке. Что еще я могу сделать?

+0

'ready' будет срабатывать, когда DOM будет готов. Вам нужно 'load' событие' window', так что обратный вызов будет запущен, когда все изображения будут полностью загружены. – Tushar

+0

document.ready, действительно не означает, что изображения загружены. Возможно, вы захотите использовать нагрузку, как указано выше. Позаботьтесь об этом, скрипка? –

ответ

0

я ответил мой собственный вопрос: я сделал следующее, и она работает отлично

$(window).load(function() { 
    // Run code 
    $('.media-box-image').each(function() { 
     var $width = $('.media-box-image').width(); 
     var $height = $('.media-box-image').height(); 
     var $this = $(this).find('img'); 

     $this.attr('width', $width); 
     $this.attr('height', $height); 
    }); 
}); 
+0

И вы должны использовать '$ (this)' внутри 'each' вместо' $ ('. Media-box-image') '. – Tushar

+0

@Tushar - спасибо –

1

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

Поскольку данных изображения нет, изображения не имеют ни ширины, ни высоты.

Использование $(window).on('load'...) вместо $(document).ready(...)

+0

Спасибо большое, я понял это вскоре после того, как я разместил вопрос. Большое вам спасибо за то, что нашли время ответить. –

+0

@zzzzBov Большое спасибо за ваш ответ. За это уже больше 5 часов. –