jQuery字母索引

时间:2009-06-23 15:56:34

标签: jquery

我对jQuery很新,所以请原谅...... 我在无序列表中有一个包含很长超链接列表的页面:

<div class="longlist">
<ul>
<li><a href="/firstitem.aspx" title="First Item">First Item</a></li>
<li><a href="/seconditem.aspx" title="Second Item">Second Item</a></li>
...
<li><a href="/lastitem.aspx" title="Last Item">Last Item</a></li>
</ul>
</div>

此页面顶部是字母表字母的超链接列表

<div class="alphabet">
<a href="#" title="A">A</a>
<a href="#" title="B">B</a>
<a href="#" title="C">C</a>
...
<a href="#" title="Z">Z</a>
<a href="#" title="All">ALL</a>
</div>

当用户点击字母索引中的任何链接时,我只需要在长列表中显示以所选字母开头的项目。如果在长列表中没有与该字母匹配的项目,那么我还需要“灰显”字母链接(这样用户就不会费心点击不存在的索引)。

如何使用jQuery执行此操作?

2 个答案:

答案 0 :(得分:5)

$(document).ready(function(){.

    $(".alphabet a").each(function(i){
        if ($(".longlist ul li a[title^="+$(this).text()+"]").length < 1){
            $(this).hide();
        }
    });

    $(".alphabet a").click(function(){
        var letter = $(this).text();
        if (letter == 'ALL'){
            $(".longlist ul li").show();
            return;
        }

        $(".longlist ul li").hide();
        $(".longlist ul li a[title^="+letter+"]").parent().show();

    });     
});

似乎适合我:)

答案 1 :(得分:4)

$('myLetterList a').click(function(){
    var letter = $(this).attr('title');
    $('ul li').each(function(){
        var t = $(this).attr('title');
        if(letter != t.substring(0,1)){
            $(this).hide();
        }
    });
});

我确信有更多的jQuery-ish方法(特别是.each()位),但这应该让你接近你想要的位置。