是否有用于列表排序的jQuery插件?

时间:2009-10-19 20:19:22

标签: jquery-plugins

是否有一个jQuery插件可以根据存储为隐藏元素的元数据对项目列表(<li>...</li>)进行排序?例如,每个列表项都有两个隐藏的输入:authoryear。我想用这些隐藏的元素对列表进行排序。我想知道是否有一个随时可用的jQuery插件。到目前为止,我还没有找到这样的插件。我发现的唯一的是表格排序。

<ul>
  <li>Position 1
    <input type="hidden" name="author" value="Peter"/>
    <input type="hidden" name="year" value="2004"/>
  </li>
  <li>Position 2
    <input type="hidden" name="author" value="John"/>
    <input type="hidden" name="year" value="2005"/>
  </li>
  <li>Position 3
    <input type="hidden" name="author" value="Tony"/>
    <input type="hidden" name="year" value="2006"/>
  </li>
</ul>

1 个答案:

答案 0 :(得分:1)

你走了:

<ul>
  <li>Position 1
    <input type="hidden" name="author" value="Peter"/>
    <input type="hidden" name="year" value="2004"/>
  </li>
  <li>Position 2
    <input type="hidden" name="author" value="John"/>
    <input type="hidden" name="year" value="2005"/>
  </li>
  <li>Position 3
    <input type="hidden" name="author" value="Tony"/>
    <input type="hidden" name="year" value="2006"/>
  </li>
</ul>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>

<script type="text/javascript">
    jQuery.fn.sort = function() {  
        return this.pushStack( [].sort.apply( this, arguments ), []);  
    };  

    function mySorter(a,b){  
         return $(a).find("[name=author]").val() > $(b).find("[name=author]").val() ? 1 : -1;  
    };  

    $(document).ready(function(){
         $('ul li').sort(mySorter).appendTo('ul');
    })

</script>

我改编自:http://www.wrichards.com/blog/2009/02/jquery-sorting-elements/

编辑:使用val()和'ul'

修复错误