【问题标题】:jQuery alphabetic indexjQuery 字母索引
【发布时间】:2010-11-05 05:34:28
【问题描述】:

我对 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 做到这一点?

【问题讨论】:

  • 要求是隐藏其余的链接,只显示那些被选中的。

标签: jquery


【解决方案1】:
$(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();

    });     
});

似乎对我有用:)

【讨论】:

  • 哦,不知道 [attribute^=] 选择器
  • 感谢lvtrii,看起来很优雅!禁用字母链接的位怎么样?
  • 抱歉,没看到那一点。您需要添加: $(".alphabet a").each(function(i){ if ($(".longlist ul li a[title^="+$(this).text()+"]") .length
  • 隐藏它们而不是将它们变灰,但更改操作很容易:)
  • 优秀作品lvtrii!代码完美运行。我只需要进行一些小的修改,包括将 $(this).hide(); 更改为 $(this).removeAttr("href");
【解决方案2】:
$('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() 位),但这应该会让你接近你想要的位置。

【讨论】:

  • 我想我明白你在做什么。我可能必须先显示所有项目,然后隐藏不匹配的项目......还是反过来?
  • 正确 - 该代码假定所有项目都是可见的,并将隐藏那些不以单击字母开头的项目。您可能还想添加另一个显示所有内容的位(当然,如果这符合您的设计)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-04
相关资源
最近更新 更多