5

我在一个页面上有许多画廊,它们是从各自的按钮启动的。我喜欢在按钮旁边的页面中为画廊定义标记,然后使用.mfp-hide. 但是,当我添加关键字时,我无法激活弹出窗口delegate(否则它会激活)。

这是我到目前为止的代码,

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
  }
});
4

1 回答 1

7

它不能以这种方式工作,delegate总是在寻找目标 DOM 元素的子元素(在您的情况下为 element 的子元素.open-gallery-link)。

您可以通过 jQuery 解析所有内容并通过 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

于 2013-08-06T11:09:14.600 回答