我对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执行此操作?
答案 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()位),但这应该让你接近你想要的位置。