2013-11-24 3 views
0

Я работаю над сайтом Shopify и пытаюсь назначить div массиву фотографий.Назначение div и класса для каждого элемента в цикле for

У Shopify есть вариант page.content, который выплевывает фотографии в одном div, но я бы хотел использовать цикл for, чтобы дать им каждый уникальный div и класс.

Код, который у меня есть, не отображает какой-либо контент, но я думаю, что он близок к работе. Может быть, проще использовать .addClass(), но я думаю, что могу сделать это без JQuery. Любые мысли или комментарии были бы весьма признательны.

Вот тест page

И код, который у меня есть:

<div class="row products"> 
    <div class="product span12"> 
    <div class="image"> 
     {% for variant in page.content %} 
     {% if variant contains 'img' %} 
     <div class="image"> 
      <div class="span4">{{ variant.image }}</div> 
     </div> 
     {% endif %} 
     {% endfor %} 
    </div> 
    </div> 
</div> 

Спасибо заранее!

+0

Вы пытаетесь отобразить изображения, которые вы поместили в 'page.content' (через административную область Pages), или все изображения для определенного продукта? У продуктов есть варианты, 'page.content' не (это просто HTML). –

+0

Я пытаюсь отобразить изображения, которые помещаются в page.content через область администратора. Они не являются продуктами. Это сайт моих друзей, и он хочет рассматривать страницу как галерею. Место, где он может вставить 9-12 фотографий, которые не являются продуктами. Итак, я пытаюсь настроить таргетинг на элемент img, который отображается на странице page.content, и соответственно его стиль. Как вы думаете, это можно сделать? – morocklo

ответ

0

Использование Liquid не будет работать для выполнения этой задачи. Вы можете использовать JavaScript, что-то вроде этого:

<script> 
    var images = document.body.getElementsByTagName('img'); 

    var i; 
    for (i = 0; i < images.length; i++) 
    { 
    var parent = images[i].parentNode; 
    var sibling = images[i].nextSibling; 

    var wrapper = document.createElement('div'); 
    wrapper.className = 'new-div'; 

    wrapper.appendChild(images[i]); 

    if (sibling) { 
      parent.insertBefore(wrapper, sibling); 
    } else { 
     parent.appendChild(wrapper); 
    } 
    } 
</script> 

См подобные вопросы SO here и here.

Или вы можете использовать jQuery's .wrap() function.

+0

Спасибо, Стеф! Функция .wrap() работала отлично. Именно то, что мне нужно. – morocklo

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