Jump to content
  • 0

API слайдера Fotorama


slo_nik
 Share

Question

Доброе утро.
 
Пытаюсь разобраться с API Fotorama.
Задача следующая.
Есть исходные изображения, которые подгружаются в слайдер при первой загрузке страницы. Надо при изменении выпадающего списка менять сами изображения в слайдере.
В документации написано, что это можно сделать при помощи метода load(), но при этом надо соблюсти закономерности, которые применялись при изначальной загрузки изображений data().

 

Попробовал сделать так:

  $(function(){/* загрузка изображений при первом заходе на страницу*/      $('.fotorama').fotorama({         data: [           {img: 'images/7.jpg', thumb: 'images/7.jpg'},           {img: 'images/8.jpg', thumb: 'images/8.jpg'},           {img: 'images/9.jpg', thumb: 'images/9.jpg'},           {img: 'images/10.jpg', thumb: 'images/10.jpg'},         ]      })/* замена предыдущих изображений, #field - это выпадающий список */      $('#field').on('change',function(){        var fotoDiv = $('.fotorama').fotorama()        fotoDiv.load([            {img: 'images/1.jpg', thumb: 'images/1.jpg'},            {img: 'images/2.jpg', thumb: 'images/2.jpg'},            {img: 'images/3.jpg', thumb: 'images/3.jpg'},            {img: 'images/4.jpg', thumb: 'images/4.jpg'},        ])      })  })

Но так ничего не работает, изображения не меняются, ошибок консоль никаких не показывает.

 

В чём моя ошибка? Или я не так понял, что написано в документации?

Edited by slo_nik
Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Да, не так получаете объект АПИ. Вот вам рабочий пример: http://jsfiddle.net/hypnocolor/4ukav0Lj/. И превью для фотографий Фоторама сама генерит, поэтому можно их не уточнять вообще при указании загружаемых фоток. Только если вам не нужны свои какие-то особенные превью, конечно.

  • Like 2
Link to comment
Share on other sites

  • 0

Благодарю, всё заработало.

Получается, что изначально была ошибка в этой строке? Не в том месте?

var fotoDiv = $('.fotorama').fotorama()

 

Нет, этой строки вообще не должно было быть. Вы тут второй раз пытаетесь инициализировать фотораму, а нужно было сначала инициализировать её один раз с указанием загружаемых данных и прочих опций, потом из уже инициализированной фоторамы получить объект АПИ через .data(), и вот с ним уже манипуляции производить. http://fotorama.io/customize/api/— в самом начале статьи пример кода, с помощью которого можно получить доступ к АПИ.

Link to comment
Share on other sites

  • 0

 

Благодарю, всё заработало.

Получается, что изначально была ошибка в этой строке? Не в том месте?

var fotoDiv = $('.fotorama').fotorama()

 

Нет, этой строки вообще не должно было быть. Вы тут второй раз пытаетесь инициализировать фотораму, а нужно было сначала инициализировать её один раз, потом из уже инициализированной фоторамы получить объект АПИ через .data, и вот с ним уже манипуляции производить. http://fotorama.io/customize/api/— в самом начале статьи пример кода, с помощью которого можно получить доступ к АПИ.

 

 

Тогда мне не понятна разница между var fotorama = fotoramaDiv.data('fotorama') - var $fotorama = fotoramaDiv.data('fotorama') и  var fotoramaDiv = $('.bill').fotorama() var $fotoramaDiv = $('.bill').fotorama()

 

Что именно даёт "$"  перед fotoranaDiv? Работает с ним и без него...

Edited by slo_nik
Link to comment
Share on other sites

  • 0

Тогда мне не понятна разница между var fotorama = fotoramaDiv.data('fotorama') - var $fotorama = fotoramaDiv.data('fotorama') и  var fotoramaDiv = $('.bill').fotorama() var $fotoramaDiv = $('.bill').fotorama()

 

Что именно даёт "$"  перед fotoranaDiv? Работает с ним и без него...

 

Ну в данном случае это для наглядности. $ перед именем переменной символизирует, что в ней хранится объект jQuery. А в другой переменной, которая без доллара и с которой, в итоге, и нужно работать — объект АПИ, полученный из объекта jQuery :)

Link to comment
Share on other sites

  • 0

 

Тогда мне не понятна разница между var fotorama = fotoramaDiv.data('fotorama') - var $fotorama = fotoramaDiv.data('fotorama') и  var fotoramaDiv = $('.bill').fotorama() var $fotoramaDiv = $('.bill').fotorama()

 

Что именно даёт "$"  перед fotoranaDiv? Работает с ним и без него...

 

Ну в данном случае это для наглядности. $ перед именем переменной символизирует, что в ней хранится объект jQuery. А в другой переменной, которая без доллара и с которой, в итоге, и нужно работать — объект АПИ, полученный из объекта jQuery :)

 

 

Вот постоянно в этом путаюсь)))

Благодарю за ответ, буду вникать в написанное Вами.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy