首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >同位素是过滤和排序数据列表的最佳方法吗?

同位素是过滤和排序数据列表的最佳方法吗?
EN

Stack Overflow用户
提问于 2011-06-23 09:18:03
回答 1查看 1.9K关注 0票数 0

我对javascript和php的理解充其量是不稳定的,所以如果这段代码让您的眼睛感到疼痛,我会提前道歉:)

问题:

我正在建立一个名单,所有学校提供一个特定领域的学位。我已经收集了我想要开始的数据,并希望为用户找到一种简单的方法来对数据进行排序和筛选。

在搜索了一些筛选和排序数据之后,我偶然发现了同位素jquery插件,并认为这对于我的问题来说是一个简单的解决方法。既然我已经实现了它,我就有问题了。

使最终筛选器正常工作(本质上,当用户从最后一个筛选组中选择一个状态时,只有处于该状态的学校应该是shown.)

  • understanding,如何按状态或集中对列表中的数据进行排序(用户应该能够单击列表顶部的标题“state”或标题“集中度”,并根据所选的筛选器按升序排列列表项)。

我有一种唠叨的感觉,觉得我的实现完全错了。有人有什么建议吗?

活动页面在这里:http://forensicnexus.com/programs

我使用html/php从mysql中提取数据,如下所示:

代码语言:javascript
运行
AI代码解释
复制
<div class="option-combo accr">
    <ul class="filter option-set">
        <li><a href="#filter-accr-all" data-filter="" data-group="accr" class="selected">accredited & non-accredited</a></li>
        <li><a href="#filter-accr-yes" data-group="accr" data-filter=".accredited">accredited only</a></li>
        <li><a href="#filter-accr-no" data-group="accr" data-filter=".non-accredited">non-accredited only</a></li>
    </ul>
</div>

<div class="option-combo level">
    <ul class="filter option-set">
        <li><a href="#filter-level-all" data-filter="" data-group="level" class="selected">All Degree Levels</a></li>
        <li><a href="#filter-level-cert" data-group="level" data-filter=".cert">Certificate</a></li>
        <li><a href="#filter-level-as" data-group="level" data-filter=".ass">Associates</a></li>
        <li><a href="#filter-level-bs" data-group="level" data-filter=".bachelors">Bachelors</a></li>
    </ul>
</div>

<div class="option-combo country">
    <ul class="filter option-set">
        <li><a href="#filter-country-all" data-filter="" data-group="country" class="selected">All Locations</a></li>

        <li><a href="#filter-country-aus" data-group="country" data-filter=".aus">Australia</a></li>
        <li><a href="#filter-country-can" data-group="country" data-filter=".country-can">Canada</a></li>
        <li><a href="#filter-country-ind" data-group="country" data-filter=".ind">India</a></li>
    </ul>

</div>

<div class="option-combo state">
    <ul class="filter option-set">
        <li><a href="#filter-state-all"data-filter="" data-group="state" class="selected">All</a></li>
        <li><a href="#filter-state-alabama" data-group="state" data-filter=".alabama">AL</a></li>
        <li><a href="#filter-state-az" data-group="state" data-filter=".az">AZ</a></li>
    </ul>
</div>
</section>

    <ul id="prog_table_title">
            <li id="t_con">Concentration</li>  
            <li id="t_acc">Accred.</li>
            <li id="t_sch">School Name</li>
            <li id="t_lev">Level</li> 
            <li id="t_sta">State</li> 
            <li id="t_cou">Country</li> 
            <li id="t_lin">Link</li>                
    </ul>

<div id="programlisting">   
    <ul id="container"> 
    <?php

    while($ext_db_row = mysql_fetch_array($result)) 
        {       
        echo "<li class=\"schoolinfo\"><p class=\"concentration\">" . $ext_db_row['concentration'] . "</p>\n";      
        if ($ext_db_row['concentration'] != null)                                   
            echo "<p class=\"accreditation\">" . $ext_db_row['accreditation'] . "</p>\n";
            else echo "<br/>&nbsp;</p>\n";
        if ($ext_db_row['accreditation'] != null) 
            echo "<p class=\"school\">" . $ext_db_row['school'] . "</p>\n";
            else echo "<p>&nbsp;</p>\n";
        if ($ext_db_row['school'] != null)
            echo "<p class=\"level\">" . $ext_db_row['level'] . "</p>\n";
            else echo "<p>&nbsp;</p>\n";
        if ($ext_db_row['level'] != null)
            echo "<p class=\"state\">" . $ext_db_row['state'] . "</p>\n";
            else echo "<p>&nbsp;</p>\n";        
        if ($ext_db_row['level'] != null)
            echo "<p class=\"country\">" . $ext_db_row['country'] . "</p>\n";
            else echo "<p>&nbsp;</p>\n";    
        if ($ext_db_row['country'] != null)
            echo "<p class=\"link\"><a href=\"http://" . $ext_db_row['link'] . "\" title=\"Click here to visit the website\" target=\"_blank\"><img src=\"" . $linkicon . "\" /></a></p>\n";
            else echo "<p>&nbsp;</p>\n";            
        echo "</li>\n\n";
        }//end while

    mysql_close($con);  
    ?>  
    </ul>
    </div>

下面是我与isotope.js一起使用的javascript

代码语言:javascript
运行
AI代码解释
复制
 $(function(){

    var $container = $('#container'),
        filters = {},
        // an object 
        classData = [
          {
            index: 1,
            classNames: {
              'Y' : 'accredited',
              'N' : 'non-accredited'
            }
          },
          {
            index: 3,
            classNames: {
              'Masters' : 'masters',
              'Bachelors' : 'bachelors',
              'UndergraduateCertificate' : 'undergrad',
              'Certificate' : 'cert',
              'Associates' : 'ass',
              'GraduateCertificate' : 'mascert',
              'Doctorate' : 'phd'
            }
          },
          {
            index: 5,
            classNames: {
              'UnitedStates' : 'country-us',
              'UnitedKingdom' : 'uk',
              'Canada' : 'country-can',
              'Australia' : 'aus',
              'India' : 'ind',
              'TheNetherlands' : 'neth',
              'Scotland' : 'scot',
              'Switzerland' : 'swi',
              'Taiwan' : 'tai',
              'Turkey' : 'tur',
              'Online' : 'online'
            }
          },
          {
            index: 7,
            classNames: {
                'AL' : 'alabama',
                'AZ' : 'az',
                'CA' : 'ca',
                'CO' : 'co',
                'CT' : 'ct',
                'DC' : 'dc',
                'FL' : 'fl',
                'GA' : 'ga',
                'IL' : 'il',
                'IN' : 'in',
                'KY' : 'ky',
                'MA' : 'ma',
                'MD' : 'md',
                'MI' : 'mi',
                'MS' : 'ms',
                'MT' : 'mt',
                'ND' : 'nd',
                'NY' : 'ny',
                'OH' : 'oh',
                'OK' : 'ok',
                'PA' : 'pa',
                'RI' : 'ri',
                'TX' : 'tx',
                'VA' : 'va',
                'WA' : 'wa',
                'WV' : 'wv',
            }
          }
        ];

    $container.children().each(function(){
      var $this = $(this),
          $cells = $this.children(),
          textContent,
          className,
          obj;
      for (var i=0, len = classData.length; i < len; i++) {
        obj = classData[i];
        // read text from cell,
        // strips ALL whitespace, even inbetween words
        textContent = $cells.eq( obj.index ).text().replace(/[\n\t ]/g,'');
        className = obj.classNames[ textContent ];
        $this.addClass( className );
      }
    });

    // filter buttons
    $('.filter a').click(function(){
      var $this = $(this),
          isoFilters = [],
          prop, selector;

      // don't proceed if already selected
      if ( $this.hasClass('selected') ) {
        return;
      }

      $this.parents('.option-set').find('.selected').removeClass('selected');
      $this.addClass('selected');


      // store filter value in object
      // i.e. filters.color = 'red'
      filters[ $this.data('group') ] = $this.data('filter');

      for ( prop in filters ) {
        isoFilters.push( filters[ prop ] )
      }
      selector = isoFilters.join('');
      $container.isotope({ filter: selector });

      return false;
    });


    $container.isotope({
      itemSelector : '.schoolinfo',
      layoutMode: 'straightDown',
    });

  });
EN

回答 1

Stack Overflow用户

发布于 2012-01-24 17:00:18

零,请写简短的问题。这可能就是为什么你在6+几个月没有得到回应的原因。

首先,请消除过滤器和内容之间的讨厌的广告。我很难在你的页面上看到我在做什么。(而且,谷歌会为此给你打分)

第二,没有“状态”过滤器--你是因为它不起作用而删除它的吗?在过去的一个月里,我一直在同位素中游泳,我很乐意回答你的问题。::^]

对列表进行排序:同位素已经建立了排序功能,而我在这段代码中没有看到任何尝试。查看这里的文档:http://isotope.metafizzy.co/docs/sorting.html

不错的网站,我可以看到这将是多么有用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6458032

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文