问题
I have many galleries on a page which are launched from their respective buttons. I like the idea of defining the markup for the galleries in the page alongside the button and then hiding using the .mfp-hide
. However I cannot get the popup to activate when I add the delegate
keyword (it does otherwise).
Here is the code I have so far,
HTML
<div id="gallery1" class="mfp-hide">
<div class="slide">
... some content for slide 1 ...
</div>
<div class="slide">
... some content for slide 2 ...
</div>
</div>
<p>Blah blah <a href="#gallery1" class="open-gallery-link">view gallery one</a> blah blah ...</p>
Javascript
$('.open-gallery-link').magnificPopup({
type:'inline',
delegate:'.slide',
gallery: {
enabled: true
}
});
回答1:
It doesn't work this way, delegate
is always looking for children of target DOM element (in your case children of element .open-gallery-link
).
You may just parse everything via jQuery and open gallery via API:
$('.open-gallery-link').click(function() {
var items = [];
$( $(this).attr('href') ).find('.slide').each(function() {
items.push( {
src: $(this)
} );
});
$.magnificPopup.open({
items:items,
gallery: {
enabled: true
}
});
});
http://codepen.io/dimsemenov/pen/zvLny
来源:https://stackoverflow.com/questions/18067062/how-do-i-define-a-gallery-of-inline-content-in-html-for-use-with-magnific-popup