2015-02-12 2 views
-1

У меня есть код, в котором функция изменения размера проверяется во время выполнения для ширины экрана и загружает версию изображения высокого или стандартного разрешения.Не выполняйте оператор if, если переменная уже существует

При многократном изменении ширины между двумя определяемыми CSS шириной контрольной точки сценарий добавляет -large.jpg к имени файла, в результате чего imagename-large-large.jpg.

function resize(){ 
     $('.image').each(function() { 
     var image = $(this).find('.image img'); 
     var src = $(this).find('img').attr('src'); 
     var highRes = src.replace(".jpg", "-large.jpg"); 
     }); 
     if ($(window).width() > 1920) { 
      image.attr("src", highRes); 
     } 
     else { 
      image.attr("src", src); 
     } 
    } 

Я не знаю, как остановить скрипт добавления -large.jpg к имени файла. Каков наилучший способ сделать это?

+0

предоставить ваш html –

+1

Ваш код не будет работать; переменные «src» и «highRes» являются локальными переменными для этого '.each()' обратного вызова. – Pointy

+1

Там много чего не так. Почему у вас есть вложенные классы изображений? – vol7ron

ответ

0

Вы можете searchsrc для строки -large. Поиск возвращает -1, если он не найден, и позиция матча, если это так.

$('.image').each(function() { 
    var image = $(this).find('.image img'); 
    var src = $(this).find('img').attr('src'); 
    if(src.search('-large') !== -1){ 
     // already has -large in it 
    } 
    var highRes = src.replace(".jpg", "-large.jpg"); 
    }); 
+0

Инвертировать ваш if ... это ужасный стиль кода, чтобы иметь пустой блок-блок, подобный этому –

0

Попробуйте вместо этого:

function resize(){ 
    $('.image').each(function() { 
    var image = $(this).find('.image img'), 
     src = $(this).find('img').attr('src') 
     isLarge = /\-large/.test(src); 
    if ($(window).width() > 1920 && !isLarge) { 
     image.attr("src", src.replace(".jpg", "-large.jpg")); 
    } 
    else if (isLarge) { 
     image.attr("src", src.replace("-large.jpg", ".jpg")); 
    } 
    }); 
} 

Мы только заменить СРК, если он должен быть изменен.

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