【问题标题】:Sorting with Isotope Not Working同位素分选不起作用
【发布时间】:2015-03-14 01:55:12
【问题描述】:

我对 javascript 还很陌生,我不知道为什么我的排序不起作用。过滤部分在处理一个小问题时运行良好(我似乎无法将其置于我的“投资组合”部分的中心)。我已经阅读了所有 Isotope 页面,甚至这里的多个页面,但没有任何内容符合我的问题。

这是我的代码,基本上是从 Isotope 复制的,如果有人能帮我弄清楚为什么这不起作用,我将不胜感激:

<div id="sorts" class="button-group">
<button data-sort-by="original-order">original order</button>
<button data-sort-by="name">name</button>
<button data-sort-by="symbol">symbol</button>
<button data-sort-by="number">number</button>
<button data-sort-by="weight">weight</button>
<button data-sort-by="category">category</button>
</div>

<section class="portfolio">
<article class="entry video"><img src="baldwin.jpg" alt=""/>
<span class="magnifier"></span>
<h3 class="name">Baldwin</h3>
<p class="symbol">Hg</p>
<p class="number">80</p>
<p class="weight">200.59</p>
</article>
<article class="entry modern">
<img src="berkley.jpg" alt="">
<span class="magnifier"></span>
<h3 class="name">Berkley</h3>
<p class="symbol">Te</p>
<p class="number">52</p>
<p class="weight">127.6</p>
</article>

还有我的 jquery:

<script>
//sorting
$(function() {
var $container = $('.portfolio').isotope({
  itemSelector: '.entry',
  layoutMode: 'fitRows',
  transitionDuration: '0.6s',
  getSortData: {
   name: '.name',
   symbol: '.symbol',
   number: '.number parseInt',
   weight: function( itemElem ) {
    var weight = $( itemElem ).find('.weight').text();
    return parseFloat( weight.replace( /[\(\)]/g, '') );
    }
 }
// initial sortBy from button group
// sortBy: $buttonGroup.find(':checked').val()
});
$('#sorts').on( 'click', 'button', function() {
var sortByValue = $(this).attr('data-sort-by');
$container.isotope({ sortBy: sortByValue });
 });
});
//filtering
var $container = $('.portfolio');
   $container.isotope({
        filter: '*',
        animationOptions: {
         duration: 750,
         easing: 'linear',
         queue: false,
     }
 });

 $('nav.primary ul a').click(function(){
    var selector = $(this).attr('data-filter');
    $container.isotope({
        filter: selector,
        animationOptions: {
            duration: 750,
            easing: 'linear',
            queue: false,
        }
    });
    return false;
  });

  var $optionSets = $('nav.primary ul'),
       $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('nav.primary ul');
   $optionSet.find('.selected').removeClass('selected');
   $this.addClass('selected'); 
});
</script>

【问题讨论】:

  • 居中项目通常是 CSS 的一个功能 - 你能澄清问题是什么吗?
  • 当我删除 jquery 进行过滤时,我可以通过 CSS 将其居中。一旦关闭它就会居中。我把代码放回去了,它不再居中了。
  • 尝试将 !important 放在您拥有的 css center 属性旁边。该代码可能正在使用覆盖text-align: center 的内联规则,或者您拥有它。

标签: javascript jquery sorting jquery-isotope


【解决方案1】:

您的 HTML 和 javascript 中有一些错误。我能够让脚本与下面的 JS 一起工作:

$(function() {
  var $container = $('.portfolio').isotope({
  itemSelector: '.entry',
  layoutMode: 'fitRows',
  transitionDuration: '0.6s',
  getSortData: {
    name: '.name',
    symbol: '.symbol',
    number: '.number parseInt',
    weight: function( itemElem ) {
      var weight = $( itemElem ).find('.weight').text();
      return parseFloat( weight.replace( /[\(\)]/g, '') );
      }
   }
// initial sortBy from button group
// sortBy: $buttonGroup.find(':checked').val()
});
   $('#sorts').on( 'click', 'button', function() {
   var sortByValue = $(this).attr('data-sort-by');
   $container.isotope({ sortBy: sortByValue });
  });
});

Working Fiddle.

您在主同位素函数的开头遗漏了$,并且section 没有关闭。

我不确定您将变量“ID”用于什么目的或如何调用该函数,但上面的代码可以工作。

祝你好运!

【讨论】:

  • 非常感谢 Pixelsmith 的帮助。我仍然无法让它工作。我是否链接到正确的来源? []
  • 或者它可能是另一个用于过滤的 jquery 正在做某事?过滤有效,但也许我需要添加不同的代码才能使它们一起工作。
  • 关于您的第一条评论,不,我认为您没有链接到正确的脚本。这是您可以使用的两个 CDN 链接。 jQuery:https://code.jquery.com/jquery-1.11.2.min.js Isotope:https://cdnjs.cloudflare.com/ajax/libs/jquery.isotope/2.1.1/isotope.pkgd.js 至于你的第二个问题,我不知道你在说什么其他的 jQuery。您可以使用浏览器上的开发工具来找出不工作的地方。或者如果你抛出一个测试页面,我可以看看。
  • 非常感谢。我想我可能会回答我自己的问题。如果我删除 jquery 进行过滤,它会起作用,但是当我将它放回原处时,它会停止工作,而过滤仍然有效。我已将 jquery 代码替换为当前代码,包括用于过滤的 jquery。再次感谢您的帮助!
  • 不客气!我很高兴你把它解决了。如果它帮助您解决问题,请不要忘记将我的答案标记为正确。
猜你喜欢
  • 1970-01-01
  • 2014-04-15
  • 1970-01-01
  • 2015-04-02
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 2013-05-12
相关资源
最近更新 更多