Title: simple lightboxのキャプション改行
Last modified: 2011年7月24日

---

# simple lightboxのキャプション改行

 *  [honaboo](https://ja.wordpress.org/support/users/honaboo/)
 * (@honaboo)
 * [15年、 2ヶ月前](https://ja.wordpress.org/support/topic/simple-lightbox%e3%81%ae%e3%82%ad%e3%83%a3%e3%83%97%e3%82%b7%e3%83%a7%e3%83%b3%e6%94%b9%e8%a1%8c/)
 * simple lightboxを使用しており、キャプション（画像タイトル）を改行させたいと思
   っています。
 * Javaの知識等がなく、自分で検索していじってみたりしたのですが
    よくわからない状態
   です。
 * テーマはdelicious photographyを使用しています。
 * 以下に、プラグイン内のlightbox.jsを記述します。長くて申し訳ありません。
 *     ```
       // -----------------------------------------------------------------------------------
       //
       // Simple Lightbox
       // by Archetyped - http://archetyped.com/tools/simple-lightbox/
       // Updated: 2011-01-27
       //
       //	Originally based on Lightbox Slideshow v1.1
       //	by Justin Barkhuff - http://www.justinbarkhuff.com/lab/lightbox_slideshow/
       //  2007/08/15
       //
       //	Largely based on Lightbox v2.02
       //	by Lokesh Dhakar - http://huddletogether.com/projects/lightbox2/
       //	2006/03/31
       //
       //	Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
       //
       //	The code inserts HTML at the bottom of the page for displaying content in a non-modal dialog
       //
       // -----------------------------------------------------------------------------------
   
       /**
        * Lightbox object
        */
       //var SLB = null;
       (function($) {
       SLB = {
       	activeImage : null,
       	badObjects : ['select','object','embed'],
       	container : null,
       	enableSlideshow : null,
       	groupName : null,
       	imageArray : [],
       	options : null,
       	overlayDuration : null,
       	overlayOpacity : null,
       	playSlides : null,
       	refTags : ['a'],
       	relAttribute : null,
       	resizeDuration : null,
       	slideShowTimer : null,
       	startImage : null,
       	prefix : '',
       	checkedUrls : {},
   
       	/**
       	 * Initialize lightbox instance
       	 * @param object options Instance options
       	 */
       	initialize: function(options) {
       		this.options = $.extend(true, {
       			animate : true, // resizing animations
       			validateLinks : false, //Validate links before adding them to lightbox
       			captionEnabled: true, //Display caption
       			captionSrc : true, //Use image source URI if title not set
       			autoPlay : true, // should slideshow start automatically
       			borderSize : 10, // if you adjust the padding in the CSS, you will need to update this variable
       			containerID : document, // lightbox container object
       			enableSlideshow : true, // enable slideshow feature
       			googleAnalytics : false, // track individual image views using Google Analytics
       			imageDataLocation : 'south', // location of image caption information
       			initImage : '', // ID of image link to automatically launch when upon script initialization
       			loop : true, // whether to continuously loop slideshow images
       			overlayDuration : .2, // time to fade in shadow overlay
       			overlayOpacity : .8, // transparency of shadow overlay
       			relAttribute : null, // specifies the rel attribute value that triggers lightbox
       			resizeSpeed : 400, // controls the speed of the image resizing (milliseconds)
       			showGroupName : false, // show group name of images in image details
       			slideTime : 4, // time to display images during slideshow
       			altsrc : 'src',
       			strings : { // allows for localization
       				closeLink : 'close',
       				loadingMsg : 'loading',
       				nextLink : 'next &raquo;',
       				prevLink : '&laquo; prev',
       				startSlideshow : 'start slideshow',
       				stopSlideshow : 'stop slideshow',
       				numDisplayPrefix : 'Image',
       				numDisplaySeparator : 'of'
       			},
       			placeholders : {
       				slbContent: '<img id="slb_slbContent" />',
       				slbLoading: '<span id="slb_slbLoading">loading</span>',
       				slbClose: '<a class="slb_slbClose" href="#">close</a>',
       				navPrev: '<a class="slb_navPrev slb_nav" href="#">&laquo; prev</a>',
       				navNext: '<a class="slb_navNext slb_nav" href="#">&raquo; next</a>',
       				navSlideControl: '<a class="slb_navSlideControl" href="#">Stop</a>',
       				dataCaption: '<span class="slb_dataCaption"></span>',
       				dataNumber: '<span class="slb_dataNumber"></span>'
       			},
       			layout : null
               }, options);
   
       		//Stop if no layout is defined
       		if (!this.options.layout || this.options.layout.toString().length == 0)
       			this.end();
   
       		//Validate options
       		if ( 'prefix' in this.options )
       			this.prefix = this.options.prefix;
       		  //Activation Attribute
       		if ( null == this.options.relAttribute )
       			 this.options.relAttribute = [this.prefix];
       		else if ( !$.isArray(this.options.relAttribute) )
       			this.options.relAttribute = [this.options.relAttribute.toString()];
       		this.relAttribute = this.options.relAttribute;
   
       		if ( this.options.animate ) {
       			this.overlayDuration = Math.max(this.options.overlayDuration,0);
       			this.resizeDuration = this.options.resizeSpeed;
       		} else {
       			this.overlayDuration = 0;
       			this.resizeDuration = 0;
       		}
       		this.enableSlideshow = this.options.enableSlideshow;
       		this.overlayOpacity = Math.max(Math.min(this.options.overlayOpacity,1),0);
       		this.playSlides = this.options.autoPlay;
       		this.container = $(this.options.containerID);
       		this.updateImageList();
       		var t = this;
       		var objBody = $(this.container).get(0) != document ? this.container : $('body');
   
       		var objOverlay = $('<div/>', {
       			'id': this.getID('overlay'),
       			'css': {'display': 'none'}
       		}).appendTo(objBody)
       		  .click(function() {t.end()});
   
       		var objLightbox = $('<div/>', {
       			'id': this.getID('lightbox'),
       			'css': {'display': 'none'}
       		}).appendTo(objBody)
       		  .click(function() {t.end()});
   
       		//Build layout from template
       		var layout = this.getLayout();
   
       		//Append to container
       		$(layout).appendTo(objLightbox);
   
       		//Set UI
       		this.setUI();
   
       		//Add events
       		this.setEvents();
   
       		if (this.options.initImage != '') {
       			this.start($(this.options.initImage));
       		}
       	},
   
       	/**
       	 * Build layout from template
       	 * @uses options.layout
       	 * @return string Layout markup (HTML)
       	 */
       	getLayout: function() {
       		var l = this.options.layout;
   
       		//Expand placeholders
       		var ph, phs, phr;
       		for (ph in this.options.placeholders) {
       			phs = '{' + ph + '}';
       			//Continue to next placeholder if current one is not in layout
       			if (l.indexOf(phs) == -1)
       				continue;
       			phr = new RegExp(phs, "g");
       			l = l.replace(phr, this.options.placeholders[ph]);
       		}
   
       		//Return final layout
       		return l;
   
       	},
   
       	/**
       	 * Set localized values for UI elements
       	 */
       	setUI: function() {
       		var s = this.options.strings;
       		this.get('slbClose').html(s.closeLink);
       		this.get('navNext').html(s.nextLink);
       		this.get('navPrev').html(s.prevLink);
       		this.get('navSlideControl').html(((this.playSlides) ? s.stopSlideshow : s.startSlideshow));
       	},
   
       	/**
       	 * Add events to various UI elements
       	 */
       	setEvents: function() {
       		var t = this, delay = 500;
       		this.get('container,details').click(function(ev) {
       			ev.stopPropagation();
       		});
   
       		var clickP = function() {
       			t.get('navPrev').unbind('click').click(false);
       			setTimeout(function() {t.get('navPrev').click(clickP)}, delay);
       			t.showPrev();
       			return false;
       		};
       		this.get('navPrev').click(function(){
       			return clickP();
       		});
   
       		var clickN = function() {
       			t.get('navNext').unbind('click').click(false);
       			setTimeout(function() {t.get('navNext').click(clickN)}, delay);
       			t.showNext();
       			return false;
       		};
       		this.get('navNext').click(function() {
       			return clickN();
       		});
   
       		this.get('navSlideControl').click(function() {
       			t.toggleSlideShow();
       			return false;
       		});
       		this.get('slbClose').click(function() {
       			t.end();
       			return false;
       		});
       	},
   
       	/**
       	 * Finds all compatible image links on page
       	 */
       	updateImageList: function() {
       		var el, els, rel, ph = '{relattr}', t = this;
       		var sel = [], selBase = '[href][rel*="' + ph + '"]:not([rel~="' + this.addPrefix('off') + '"])';
   
       		//Define event handler
       		var handler = function() {
       			//Check if element is valid for lightbox
       			t.start(this);
       			return false;
       		};
   
       		//Build selector
       		for (var i = 0; i < this.refTags.length; i++) {
       			for (var x = 0; x < this.relAttribute.length; x++) {
       				sel.push(this.refTags[i] + selBase.replace(ph, this.relAttribute[x]));
       			}
       		}
       		sel = sel.join(',');
       		//Add event handler to links
       		$(sel, $(this.container)).live('click', handler);
       	},
   
       	/**
       	 * Build caption for displayed caption
       	 * @param {Object} imageLink
       	 */
       	getCaption: function(imageLink) {
       			imageLink = $(imageLink);
       			var caption = '';
       			if (this.options.captionEnabled) {
       				caption = imageLink.attr('title') || '';
       				if (caption == '') {
       					var inner = $(imageLink).find('img').first();
       					if ($(inner).length)
       						caption = $(inner).attr('title') || $(inner).attr('alt');
       					if (!caption) {
       						if (imageLink.text().length)
       							caption = imageLink.text();
       						else
       							if (this.options.captionSrc)
       								caption = imageLink.attr('href');
       					}
       					if (!caption)
       						caption = '';
       				}
       			}
       			return caption;
       	},
   
       	/**
       	 * Display overlay and lightbox. If image is part of a set, add siblings to imageArray.
       	 * @param node imageLink Link element containing image URL
       	 */
       	start: function(imageLink) {
       		imageLink = $(imageLink);
       		this.hideBadObjects();
   
       		this.imageArray = [];
       		this.groupName = this.getGroup(imageLink);
   
       		var rel = $(imageLink).attr('rel') || '';
       		var imageTitle = '';
       		var t = this;
       		var groupTemp = {};
       		this.fileExists(this.getSourceFile(imageLink),
       		function() { //File exists
       			// Stretch overlay to fill page and fade in
       			t.get('overlay')
       				.height($(document).height())
       				.fadeTo(t.overlayDuration, t.overlayOpacity);
   
       			// Add image to array closure
       			var addLink = function(el, idx) {
       				groupTemp[idx] = el;
       				return groupTemp.length;
       			};
   
       			//Build final image array & launch lightbox
       			var proceed = function() {
       				t.startImage = 0;
       				//Sort links by document order
       				var order = [], el;
       				for (var x in groupTemp) {
       					order.push(x);
       				}
       				order.sort(function(a, b) { return (a - b); });
       				for (x = 0; x < order.length; x++) {
       					el = groupTemp[order[x]];
       					//Check if link being evaluated is the same as the clicked link
       					if ($(el).get(0) == $(imageLink).get(0)) {
       						t.startImage = x;
       					}
       					var caption = imageLink.lastChild;
       					t.imageArray.push(new{'link':t.getSourceFile($(el)), 'title':t.getCaption(el),'href':t.getAattribute(innerHTML)});
       				}
       				// Calculate top offset for the lightbox and display
       				var lightboxTop = $(document).scrollTop() + ($(window).height() / 15);
   
       				t.get('lightbox').css('top', lightboxTop + 'px').show();
       				t.changeImage(t.startImage);
       			}
   
       			// If image is NOT part of a group..
       			if (null == t.groupName) {
       				// Add single image to imageArray
       				addLink(imageLink, 0);
       				t.startImage = 0;
       				proceed();
       			} else {
       				// If image is part of a group
       				var els = $(t.container).find($(imageLink).get(0).tagName.toLowerCase());
       				// Loop through links on page & find other images in group
       				var grpLinks = [];
       				var i, el;
       				for (i = 0; i < els.length; i++) {
       					el = $(els[i]);
       					if (t.getSourceFile(el) && (t.getGroup(el) == t.groupName)) {
       						//Add links in same group to temp array
       						grpLinks.push(el);
       					}
       				}
   
       				//Loop through group links, validate, and add to imageArray
       				var processed = 0;
       				for (i = 0; i < grpLinks.length; i++) {
       					el = grpLinks[i];
       					t.fileExists(t.getSourceFile($(el)),
       						function(args) { //File exists
       							var el = args.els[args.idx];
       							var il = addLink(el, args.idx);
       							processed++;
       							if (processed == args.els.length)
       								proceed();
       						},
       						function(args) { //File does not exist
       							processed++;
       							if (args.idx == args.els.length)
       								proceed();
       						},
       						{'idx': i, 'els': grpLinks});
       				}
       			}
       		},
       		function() { //File does not exist
       			t.end();
       		});
       	},
   
       	/**
       	 * Retrieve source URI in link
       	 * @param {Object} el
       	 * @return string Source file URI
       	 */
       	getSourceFile: function(el) {
       		var src = $(el).attr('href');
       		var rel = $(el).attr('rel') || '';
       		var reSrc = new RegExp('\\b' + this.options.altsrc + '\\[(.+?)\\](?:\\b|$)');
       		if ( reSrc.test(rel) ) {
       			src = reSrc.exec(rel)[1];
       		}
       		return src;
       	},
   
       	/**
       	 * Extract group name from
       	 * @param obj el Element to extract group name from
       	 * @return string Group name
       	 */
       	getGroup: function(el) {
       		//Get full attribute value
       		var g = null;
       		var rel = $(el).attr('rel') || '';
       		if (rel != '') {
       			var gTmp = '',
       				gSt = '[',
       				gEnd = ']',
       				search = '',
       				idx,
       				prefix = ' ';
       			//Iterate through attributes to find group
       			for (var i = 0; i < this.relAttribute.length; i++) {
       				search = this.relAttribute[i];
       				idx = rel.indexOf(search);
       				//Prefix with space to find whole word
       				if (prefix != search.charAt(0) && idx > 0) {
       					search = prefix + search;
       					idx = rel.indexOf(search);
       				}
       				//Stop processing if value is not found
       				if (idx == -1)
       					continue;
       				gTmp = $.trim(rel.substring(idx).replace(search, ''));
       				//Check if group defined
       				if (gTmp.length && gSt == gTmp.charAt(0) && gTmp.indexOf(gEnd) != -1) {
       					//Extract group name
       					g = gTmp.substring(1, gTmp.indexOf(gEnd));
       					continue;
       				}
       			}
       		}
       		return g;
       	},
   
       	/**
       	 * Preload requested image prior to displaying it in lightbox
       	 * @param int imageNum Index of image in imageArray property
       	 * @uses imageArray to retrieve index at specified image
       	 * @uses resizeImageContainer() to resize lightbox after image has loaded
       	 */
       	changeImage: function(imageNum) {
       		this.activeImage = imageNum;
   
       		this.disableKeyboardNav();
       		this.pauseSlideShow();
   
       		// hide elements during transition
       		this.get('slbLoading').show();
       		this.get('slbContent').hide();
       		this.get('details').hide();
       		var imgPreloader = new Image();
       		var t = this;
       		// once image is preloaded, resize image container
       		$(imgPreloader).bind('load', function() {
       			t.get('slbContent').attr('src', imgPreloader.src);
       			t.resizeImageContainer(imgPreloader.width, imgPreloader.height);
       			//Restart slideshow if active
       			if ( t.isSlideShowActive() )
       				t.startSlideShow();
       		});
   
       		//Load image
       		imgPreloader.src = this.imageArray[this.activeImage].link;
       	},
   
       	/**
       	 * Resizes lightbox to fit image
       	 * @param int imgWidth Image width in pixels
       	 * @param int imgHeight Image height in pixels
       	 */
       	resizeImageContainer: function(imgWidth, imgHeight) {
       		// get current height and width
       		var el = this.get('container');
       		var borderSize = this.options.borderSize * 2;
   
       		this.get('container').animate({width: imgWidth + borderSize, height: imgHeight + borderSize}, this.resizeDuration)
   
       		this.showImage();
       	},
   
       	/**
       	 * Display image and begin preloading neighbors.
       	 */
       	showImage: function() {
       		this.get('slbLoading').hide();
       		var t = this;
       		this.get('slbContent').fadeIn(500, function() { t.updateDetails(); });
       		this.preloadNeighborImages();
       	},
   
       	/**
       	 * Display caption, image number, and bottom nav
       	 */
       	updateDetails: function() {
       		if (this.options.captionEnabled) {
       			this.get('dataCaption').text(this.imageArray[this.activeImage].title);
       			this.get('dataCaption').show();
       		} else {
       			this.get('dataCaption').hide();
       		}
   
       		// if image is part of set display 'Image x of y'
       		if (this.hasImages()) {
       			var num_display = this.options.strings.numDisplayPrefix + ' ' + (this.activeImage + 1) + ' ' + this.options.strings.numDisplaySeparator + ' ' + this.imageArray.length;
       			if (this.options.showGroupName && this.groupName != '') {
       				num_display += ' ' + this.options.strings.numDisplaySeparator + ' ' + this.groupName;
       			}
       			this.get('dataNumber')
       				.text(num_display)
       				.show();
       		}
   
       		this.get('details').width(this.get('slbContent').width() + (this.options.borderSize * 2));
       		this.updateNav();
       		var t = this;
       		this.get('details').animate({height: 'show', opacity: 'show'}, 650);
       	},
   
       	/**
       	 * Display appropriate previous and next hover navigation.
       	 */
       	updateNav: function() {
       		if (this.hasImages()) {
       			this.get('navPrev').show();
       			this.get('navNext').show();
       			if (this.enableSlideshow) {
       				this.get('navSlideControl').show();
       				if (this.playSlides) {
       					this.startSlideShow();
       				} else {
       					this.stopSlideShow();
       				}
       			} else {
       				this.get('navSlideControl').hide();
       			}
       		} else {
       			// Hide navigation controls when only one image exists
       			this.get('dataNumber').hide();
       			this.get('navPrev').hide();
       			this.get('navNext').hide();
       			this.get('navSlideControl').hide();
       		}
       		this.enableKeyboardNav();
       	},
   
       	/**
       	 * Checks if slideshow is currently activated
       	 * @return bool TRUE if slideshow is active, FALSE otherwise
       	 * @uses playSlides to check slideshow activation status
       	 */
       	isSlideShowActive: function() {
       		return this.playSlides;
       	},
   
       	/**
       	 * Start the slideshow
       	 */
       	startSlideShow: function() {
       		this.playSlides = true;
       		var t = this;
       		clearInterval(this.slideShowTimer);
       		this.slideShowTimer = setInterval(function() { t.showNext(); t.pauseSlideShow(); }, this.options.slideTime * 1000);
       		this.get('navSlideControl').text(this.options.strings.stopSlideshow);
       	},
   
       	/**
       	 * Stop the slideshow
       	 */
       	stopSlideShow: function() {
       		this.playSlides = false;
       		if (this.slideShowTimer) {
       			clearInterval(this.slideShowTimer);
       		}
       		this.get('navSlideControl').text(this.options.strings.startSlideshow);
       	},
   
       	/**
       	 * Toggles the slideshow status
       	 */
       	toggleSlideShow: function() {
       		if (this.playSlides) {
       			this.stopSlideShow();
       		}else{
       			this.startSlideShow();
       		}
       	},
   
       	/**
       	 * Pauses the slideshow
       	 * Stops the slideshow but does not change the slideshow's activation status
       	 */
       	pauseSlideShow: function() {
       		if (this.slideShowTimer) {
       			clearInterval(this.slideShowTimer);
       		}
       	},
   
       	/**
       	 * Check if there is at least one image to display in the lightbox
       	 * @return bool TRUE if at least one image is found
       	 * @uses imageArray to check for images
       	 */
       	hasImage: function() {
       		return ( this.imageArray.length > 0 );
       	},
   
       	/**
       	 * Check if there are multiple images to display in the lightbox
       	 * @return bool TRUE if there are multiple images
       	 * @uses imageArray to determine the number of images
       	 */
       	hasImages: function() {
       		return ( this.imageArray.length > 1 );
       	},
   
       	/**
       	 * Check if the current image is the first image in the list
       	 * @return bool TRUE if image is first
       	 * @uses activeImage to check index of current image
       	 */
       	isFirstImage: function() {
       		return ( this.activeImage == 0 );
       	},
   
       	/**
       	 * Check if the current image is the last image in the list
       	 * @return bool TRUE if image is last
       	 * @uses activeImage to check index of current image
       	 * @uses imageArray to compare current image to total number of images
       	 */
       	isLastImage: function() {
       		return ( this.activeImage == this.imageArray.length - 1 );
       	},
   
       	/**
       	 * Show the next image in the list
       	 */
       	showNext : function() {
       		if (this.hasImages()) {
       			if ( !this.options.loop && this.isLastImage() ) {
       				return this.end();
       			}
       			if ( this.isLastImage() ) {
       				this.showFirst();
       			} else {
       				this.changeImage(this.activeImage + 1);
       			}
       		}
       	},
   
       	/**
       	 * Show the previous image in the list
       	 */
       	showPrev : function() {
       		if (this.hasImages()) {
       			if ( !this.options.loop && this.isFirstImage() )
       				return this.end();
       			if (this.activeImage == 0) {
       				this.showLast();
       			} else {
       				this.changeImage(this.activeImage - 1);
       			}
       		}
       	},
   
       	/**
       	 * Show the first image in the list
       	 */
       	showFirst : function() {
       		if (this.hasImages()) {
       			this.changeImage(0);
       		}
       	},
   
       	/**
       	 * Show the last image in the list
       	 */
       	showLast : function() {
       		if (this.hasImages()) {
       			this.changeImage(this.imageArray.length - 1);
       		}
       	},
   
       	/**
       	 * Enable image navigation via the keyboard
       	 */
       	enableKeyboardNav: function() {
       		var t = this;
       		$(document).keydown(function(e) {
       			t.keyboardAction(e);
       		});
       	},
   
       	/**
       	 * Disable image navigation via the keyboard
       	 */
       	disableKeyboardNav: function() {
       		$(document).unbind('keydown');
       	},
   
       	/**
       	 * Handler for keyboard events
       	 * @param event e Keyboard event data
       	 */
       	keyboardAction: function(e) {
       		if (e == null) { // ie
       			keycode = event.keyCode;
       		} else { // mozilla
       			keycode = e.which;
       		}
   
       		key = String.fromCharCode(keycode).toLowerCase();
   
       		if (keycode == 27 || key == 'x' || key == 'o' || key == 'c') { // close lightbox
       			this.end();
       		} else if (key == 'p' || key == '%') { // display previous image
       			this.showPrev();
       		} else if (key == 'n' || key =='\'') { // display next image
       			this.showNext();
       		} else if (key == 'f') { // display first image
       			this.showFirst();
       		} else if (key == 'l') { // display last image
       			this.showLast();
       		} else if (key == 's') { // toggle slideshow
       			if (this.hasImage() && this.options.enableSlideshow) {
       				this.toggleSlideShow();
       			}
       		}
       	},
   
       	/**
       	 * Preloads images before/after current image
       	 */
       	preloadNeighborImages: function() {
       		var nextImageID = this.imageArray.length - 1 == this.activeImage ? 0 : this.activeImage + 1;
       		nextImage = new Image();
       		nextImage.src = this.imageArray[nextImageID].link;
   
       		var prevImageID = this.activeImage == 0 ? this.imageArray.length - 1 : this.activeImage - 1;
       		prevImage = new Image();
       		prevImage.src = this.imageArray[prevImageID].link;
       	},
   
       	/**
       	 * Close the lightbox
       	 */
       	end: function() {
       		this.disableKeyboardNav();
       		this.pauseSlideShow();
       		this.get('lightbox').hide();
       		this.get('overlay').fadeOut(this.overlayDuration);
       		this.showBadObjects();
       	},
   
       	/**
       	 * Displays objects that may conflict with the lightbox
       	 * @param bool show (optional) Whether or not to show objects (Default: TRUE)
       	 */
       	showBadObjects: function (show) {
       		show = ( typeof(show) == 'undefined' ) ? true : !!show;
       		var vis = (show) ? 'visible' : 'hidden';
       		$(this.badObjects.join(',')).css('visibility', vis);
       	},
   
       	/**
       	 * Hides objects that may conflict with the lightbox
       	 * @uses showBadObjects() to hide objects
       	 */
       	hideBadObjects: function () {
       		this.showBadObjects(false);
       	},
   
       	/**
       	 * Generate separator text
       	 * @param string sep Separator text
       	 * @return string Separator text
       	 */
       	getSep: function(sep) {
       		return ( typeof sep == 'undefined' ) ? '_' : sep;
       	},
   
       	/**
       	 * Retrieve prefix
       	 * @return string Object prefix
       	 */
       	getPrefix: function() {
       		return this.prefix;
       	},
   
       	/**
       	 * Add prefix to text
       	 * @param string txt Text to add prefix to
       	 * @param string sep (optional) Separator text
       	 * @return string Prefixed text
       	 */
       	addPrefix: function(txt, sep) {
       		return this.getPrefix() + this.getSep(sep) + txt;
       	},
   
       	hasPrefix: function(txt) {
       		return ( txt.indexOf(this.addPrefix('')) == 0 ) ? true : false;
       	},
   
       	/**
       	 * Generate formatted ID for lightbox-specific elements
       	 * @param string id Base ID of element
       	 * @return string Formatted ID
       	 */
       	getID: function(id) {
       		return this.addPrefix(id);
       	},
   
       	/**
       	 * Generate formatted selector for lightbox-specific elements
       	 * Compares specified ID to placeholders first, then named elements
       	 * Multiple selectors can be included and separated by commas (',')
       	 * @param string id Base ID of element
       	 * @uses options.placeholders to compare id to placeholder names
       	 * @return string Formatted selector
       	 */
       	getSel: function(id) {
       		//Process multiple selectors
       		var delim = ',', prefix = '#', sel;
       		if (id.toString().indexOf(delim) != -1) {
       			//Split
       			var sels = id.toString().split(delim);
       			//Build selector
       			for (var x = 0; x < sels.length; x++) {
       				sels[x] = this.getSel($.trim(sels[x]));
       			}
       			//Join
       			sel = sels.join(delim);
       		} else {
       			//Single selector
       			if (id in this.options.placeholders) {
       				var ph = $(this.options.placeholders[id]);
       				if (!ph.attr('id')) {
       					//Class selector
       					prefix = '.';
       				}
       			}
       			sel = prefix + this.getID(id);
       		}
   
       		return sel;
       	},
   
       	/**
       	 * Retrieve lightbox-specific element
       	 * @param string id Base ID of element
       	 * @uses getSel() to generate formatted selector for element
       	 * @return object jQuery object of selected element(s)
       	 */
       	get: function(id) {
       		return $(this.getSel(id));
       	},
   
       	/**
       	 * Checks if file exists using AJAX request
       	 * @param string url File URL
       	 * @param callback success Callback to run if file exists
       	 * @param callback failure Callback to run if file does not exist
       	 * @param obj args Arguments for callback
       	 */
       	fileExists: function(url, success, failure, args) {
       		if (!this.options.validateLinks)
       			return success(args);
       		var statusFail = 400;
       		var stateCheck = 4;
       		var t = this;
       		var proceed = function(res) {
       			if (res.status < statusFail) {
       				if ($.isFunction(success))
       					success(args);
       			} else {
       				if ($.isFunction(failure))
       					failure(args);
       			}
       		};
   
       		//Check if URL already processed
       		if (url in this.checkedUrls) {
       			proceed(this.checkedUrls[url]);
       		} else {
       			var req = new XMLHttpRequest();
       			req.open('HEAD', url, true);
       			req.onreadystatechange = function() {
       				if (stateCheck == this.readyState) {
       					t.addUrl(url, this);
       					proceed(this);
       				}
       			};
       			req.send();
       		}
       	},
   
       	addUrl: function(url, res) {
       		if (!(url in this.checkedUrls))
       			this.checkedUrls[url] = res;
       	}
       }
       })(jQuery);
       ```
   
 * 以上です。宜しくお願いいたします。

 トピック「simple lightboxのキャプション改行」には新たに返信することはできません。

## タグ

 * [キャプション](https://ja.wordpress.org/support/topic-tag/%e3%82%ad%e3%83%a3%e3%83%97%e3%82%b7%e3%83%a7%e3%83%b3/)
 * [画像](https://ja.wordpress.org/support/topic-tag/%e7%94%bb%e5%83%8f/)
 * [表示](https://ja.wordpress.org/support/topic-tag/%e8%a1%a8%e7%a4%ba/)
 * [lightbox](https://ja.wordpress.org/support/topic-tag/lightbox/)
 * [改行](https://ja.wordpress.org/support/topic-tag/%e6%94%b9%e8%a1%8c/)

 * フォーラム: [プラグイン](https://ja.wordpress.org/support/forum/plugins/)
 * 0件の返信
 * 1人の参加者
 * 最後の返信者: [honaboo](https://ja.wordpress.org/support/users/honaboo/)
 * 最後の活動: [15年、 2ヶ月前](https://ja.wordpress.org/support/topic/simple-lightbox%e3%81%ae%e3%82%ad%e3%83%a3%e3%83%97%e3%82%b7%e3%83%a7%e3%83%b3%e6%94%b9%e8%a1%8c/)
 * 状態: 未解決

## トピック

### 人気のトピック

### 返信がないトピック

### サポート関連ではないトピック

### 解決済みのトピック

### 未解決のトピック

### すべてのトピック
