在fancybox中遇到同位素过滤问题

时间:2016-09-27 23:25:38

标签: javascript jquery fancybox-2 isotope

我正在使用我编辑的免费响应式网页模板,为朋友制作一个小型投资组合网站。我遇到的问题是,当我在Fancybox窗口中选择特定的图库和视图时,它将继续点击所有图像,而不仅仅是该特定图库中的图像。

我一直在搜索并找到了这个解决方案(https://groups.google.com/forum/#!topic/fancybox/ncVsViD2v9o),但我并不真正了解javascript,因此我不确定这是否对我有用或如何实现进入模板的代码。我已经包含了html的一部分以及我认为以下相关的js:

HTML



<!-- Portfolio Projects -->
<div class="row">
  <div class="span3">
    <!-- Filter -->
    <nav id="options" class="work-nav">
      <ul id="filters" class="option-set" data-option-key="filter">
        <li class="type-work">Photography</li>
        <li><a href="#filter" data-option-value="*" class="selected">All Images</a>
        </li>
        <li><a href="#filter" data-option-value=".people">People</a>
        </li>
        <li><a href="#filter" data-option-value=".places">Places</a>
        </li>
        <li><a href="#filter" data-option-value=".things">Things</a>
        </li>
      </ul>
    </nav>
    <!-- End Filter -->
  </div>

  <div class="span9">
    <div class="row">
      <section id="projects">
        <ul id="thumbs">

          <!-- Item Project and Filter Name -->
          <li class="item-thumbs span3 people">
            <!-- Fancybox - Gallery Enabled - Title - Full Image -->
            <a class="hover-wrap fancybox" data-fancybox-group="gallery" title="John" href="_include/img/work/full/people-01-full.jpg">
              <span class="overlay-img"></span>
              <span class="overlay-img-thumb font-icon-plus"></span>
            </a>
            <!-- Thumb Image and Description -->
            <img src="_include/img/work/thumbs/people-01.jpg" alt="Print Number 1–10">
          </li>
          <!-- End Item Project -->

          <!-- Item Project and Filter Name -->
          <li class="item-thumbs span3 things">
            <!-- Fancybox - Gallery Enabled - Title - Full Image -->
            <a class="hover-wrap fancybox" data-fancybox-group="gallery" title="Garden Wall" href="_include/img/work/full/things-07-full.jpg">
              <span class="overlay-img"></span>
              <span class="overlay-img-thumb font-icon-plus"></span>
            </a>
            <!-- Thumb Image and Description -->
            <img src="_include/img/work/thumbs/things-07.jpg" alt="Print Number 1–22">
          </li>
          <!-- End Item Project -->
&#13;
&#13;
&#13;

JS

&#13;
&#13;
BRUSHED.filter = function() {
  if ($('#projects').length > 0) {
    var $container = $('#projects');

    $container.imagesLoaded(function() {
      $container.isotope({
        // options
        animationEngine: 'best-available',
        itemSelector: '.item-thumbs',
        layoutMode: 'fitRows'
      });
    });


    // filter items when filter link is clicked
    var $optionSets = $('#options .option-set'),
      $optionLinks = $optionSets.find('a');

    $optionLinks.click(function() {
      var $this = $(this);
      // don't proceed if already selected
      if ($this.hasClass('selected')) {
        return false;
      }
      var $optionSet = $this.parents('.option-set');
      $optionSet.find('.selected').removeClass('selected');
      $this.addClass('selected');

      // make option object dynamically, i.e. { filter: '.my-filter-class' }
      var options = {},
        key = $optionSet.attr('data-option-key'),
        value = $this.attr('data-option-value');
      // parse 'false' as false boolean
      value = value === 'false' ? false : value;
      options[key] = value;
      if (key === 'layoutMode' && typeof changeLayoutMode === 'function') {
        // changes in layout modes need extra logic
        changeLayoutMode($this, options)
      } else {
        // otherwise, apply new options
        $container.isotope(options);
      }

      return false;
    });
  }
}
&#13;
&#13;
&#13;

非常感谢任何见解,如果我需要提供更多信息,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:0)

您的实时链接对尝试某些内容非常有帮助 顺便说一句好的演示文稿。

所以......就像我昨天在评论中所说的那样,解决你的问题的方法是更改​​Rectangle属性......你必须点击类别链接就可以了。

所选类别中的图片不得位于FancyBox组“图库”中...但是在“选定”图库中。只显示与点击触发FancyBox的图库名称相同的图片。

以下是我添加的代码:

data-fancybox-group

我在// find the clicked category var fancyBoxClassToShow = $(this).attr("data-option-value"); // reset all data-fancybox-group (in case of a previous selection) $("#thumbs").find(".item-thumbs").each(function(){ $(this).find("a").attr("data-fancybox-group","gallery") }); // change all data-fancybox-group that IS a child of the clicked category $("#thumbs").find(fancyBoxClassToShow).each(function(){ $(this).find("a").attr("data-fancybox-group","gallerySelected") }); 函数中仅在$optionLinks.click上方添加了这些行。

就是这样。
请参阅CodePen here