У меня есть очень конкретный вопрос, который звучит для fancybox. Моя разметка выглядит так:
<a id="fancy_link" class="fancybox" href="image.jpg" rel="group">
<img id="image" src="image.jpg" style="height: 500px;">
</a>
это одно изображение, которое прекрасно работает до сих пор. Но поскольку у меня много изображений (200), я хочу сгруппировать и не хочу жестко кодировать каждый из них в разметке, я использую простую функцию jQuery:
function changeImg(e, f) {
$('#fancy_link').attr('href', e[f].img);
$("#image").attr('src', e[f].img);
}
e
и f
- ссылки изображений, которые сохраняются в объекте Array namend .img
Итак, теперь мой вопрос: если вы знаете, как я могу справиться с этим, этот fancybox создает элементы группы, даже если в разметке есть только один элемент <img>
и он просматривает все изображения, когда я нажимаю кнопку prev и next, которые идут с FancyBox.
После одного из ваших комментариев я понял, что вы имеете в виду. Это было бы странно, и было бы неожиданно, если бы вы не знали этот код и не изучали его. Я хочу, чтобы вы только хотели отобразить первый:
<div>
<img src="1.jpg" alt="img1" rel="group1" />
<img src="2.jpg" alt="img2" rel="group1" />
<img src="3.jpg" alt="img3" rel="group1" />
<img src="4.jpg" alt="img4" rel="group1" />
<img src="5.jpg" alt="img5" rel="group1" />
</div>
div img{ display: none; }
div img:nth-child(1){ display: inline-block;}
Этот код имеет большее значение для других пользователей. Профессионал здесь состоит в том, что все изображения будут предварительно загружены. Кон таким образом, что все изображения будут предварительно загружены (я знаю, дважды). У вас есть большое количество изображений, которые могут вынуть патрон из полосы пропускания пользователя.
Если у вас есть все пути вверху изображений в массиве, вы можете сделать что-то вроде этого:
$.each(imageArr, function(key,image){
$img = $( document.createElement('img') );
$img[0].src = image.img; // img is the key in the object
$('div').append($img);
})
Это немного сложнее и может усложнить некоторые обработки событий, но у вас есть больше контроля над загружаемыми изображениями. Вы можете изменить это на то, что загружает два за раз, а затем делает следующий
<img>
когда я нажимаю кнопки « prev
или « next
в fancybox, но я нажимаю, что это приведет к код fancybox, чтобы сделать это.
e[f]
в комментарии после строки?$('.ImagesYouWant').attr('rel','group1').fancybox();