Open jQuery prettyPhoto API to an image other than the first one

prettyPhoto is neat little jQuery plugin, that makes it easy to do lightbox style image (or videos, flash, YouTube, iframes and ajax) overlays on your page. The API documentation doesnt is sparse, but there is a way to open a list of images with an image other than your first one displayed..

Scott Bock

prettyPhoto is neat little jQuery plugin, that makes it easy to do lightbox style image (or “videos, flash, YouTube, iframes and ajax”) overlays on your page.

Let’s say I have 5 images that I want to popup and order is important, but sometimes I want to start showing the third image. I can use their API to open a prettyPhoto popup.

$.prettyPhoto.open(['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg']);

But that doesn’t open with the 3rd image displaying? I could reorder the array like this: $.prettyPhoto.open([ '3.jpg', '1.jpg', '2.jpg','4.jpg', '5.jpg']);

Sometimes order is important, though. So I want still want the images in order but I just want 3 to be the one that starts large.

Here is all of the documentation you get about using the API.

The public API functions are the following $.prettyPhoto.open('images/fullscreen/image.jpg','Title','Description'); $.prettyPhoto.changePage('next'); $.prettyPhoto.changePage('previous'); $.prettyPhoto.close(); You can also open galleries using the API, just pass arrays to the open function. `apiimages =[‘images/fullscreen/image1.jpg’,‘images/fullscreen/image2.jpg’,‘images/fullscreen/image3.jpg’]; apititles = [‘Title 1’,‘Title 2’,‘Title 3’]; apidescriptions = [‘Description 1’,‘Description 2’,‘Description 3’] $.prettyPhoto.open(apiimages,apititles,apidescriptions);`

Digging into the jquery.prettyPhoto.js source code you can see exactly what is going on in the changePage method. $.prettyPhoto.changePage = function (direction) { currentGalleryPage = 0; if (direction == 'previous') { set_position--; if (set_position < 0) set_position = $(pp_images).size() - 1; } else if (direction == 'next') { set_position++; if (set_position > $(pp_images).size() - 1) set_position = 0; } else { set_position = direction; }; rel_index = set_position; if (!doresize) doresize = true; if (settings.allow_expand) { $('.pp_contract').removeClass('pp_contract').addClass('pp_expand'); } _hideContent(function () { $.prettyPhoto.open(); }); };

Basically, the method is using magic string matching on ‘previous’ and ‘next’ to do a +1 or -1 on the setposition. If the parameter sent in isn’t ‘previous’ or ‘next’ it sets setposition equal to the parameter sent in.

That is great news! Now, since I know the index of the image I want to show I can just call changePage with that value as the parameter, like this:

$.prettyPhoto.open(['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg']); $.prettyPhoto.changePage(2);

Share this Post

Related Blog Posts

JavaScript

Implementing Social Icons

December 11th, 2012

Visit nearly any website these days and there will be one or more groups of social icons inviting visitors to share the site or page with a social network or to follow the sites related page or feed on a social network.

Object Partners
JavaScript

Use JQuery Mobile’s Tools Suite to help you debug and improve your JQuery Mobile application

November 2nd, 2012

JQuery Mobile provides tools to help you gain insight and understanding into global configuration values, page events, and page change timings in your app.

Object Partners
JavaScript

An approach to processing dynamic one-to-many forms with Grails 2.1

October 4th, 2012

An example of processing forms containing both parent and child objects (one-to-many relationship) in Grails 2.

Object Partners

About the author

Scott Bock

Principal Consultant

Scott is a Senior Software Engineer with over 12 years of experience using Java, and 5 years experience in technical leadership positions. His strengths include troubleshooting and problem solving abilities, excellent repertoire with customers and management, and verbal and written communication. He develops code across the entire technology stack including database, application, and user interface.