iAnatol
@iAnatol

Как правильно написать скрипт jQuery, отключающий предзагрузку картинок в мобильной версии?

Здравствуйте. Есть скрипт подгружающий картинки на сайт:
//<![CDATA[
(function($){
    $.fn.preload = function() {
        this.each(function(){
            $('<img/>')[0].src = this;
		});
  
    $(['/img/one.gif','/img/two.gif','/img/three.gif',]).preload();
}
})(jQuery);
//]]>

Как отключить предзагрузку этих картинок в мобильной версии, т.е. когда разрешение экрана меньше 640px?
Пробовал вариант добавления if ($(window).width()>640 :
//<![CDATA[
(function($){
    $.fn.preload = function() {
        this.each(function(){
          if ($(window).width()>640)
            $('<img/>')[0].src = this;
          }
		});
    $(['/img/one.gif','/img/two.gif','/img/three.gif',]).preload();
}
})(jQuery);
//]]>

Он не работает, из-за моей некомпетентности в этом вопросе.
Предложите пожалуйста рабочие варианты.
Спасибо.
  • Вопрос задан
  • 234 просмотра
Решения вопроса 1
AdrenaLeen
@AdrenaLeen
Я бы написала так:
//<![CDATA[
(function($){
    $.fn.preload = function() {
        this.each(function(){
            $('<img/>')[0].src = this;
    });
    if($(window).width() > 640) $(['/img/one.gif','/img/two.gif','/img/three.gif',]).preload();
}
})(jQuery);
//]]>
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
AppFA
@AppFA
Frontend developer at Yandex
У вас ошибка в коде, не стоит закрывающая скобка:
if ($(window).width()>640
А по теме можно использовать matchMedia:
const isDesktop = window.matchMedia('only screen and (min-width: 1024px)');

if (isDesktop.matches) {
    // todo...
}
Ответ написан
У Вас написано
if ($(window).width()>640
     $('<img/>')[0].src = this;
}


А нужно вот так
if ($(window).width()>640){
     $('<img/>')[0].src = this;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы