需要显示所有选项是使用 jQuery 的基于字母的导航

Posted

技术标签:

【中文标题】需要显示所有选项是使用 jQuery 的基于字母的导航【英文标题】:Need to show All option is Letter-based Navigation using jQuery 【发布时间】:2013-06-14 07:05:05 【问题描述】:

我将应用基于字母的导航来过滤表格和列表的内容。单击其中一个字母时,过滤列表/表格以仅显示列表/表格中以该字母开头的项目。

但我面临的问题是“所有列表”。我还需要显示“全部”链接,谁能帮我添加“全部”链接..

$(function () 
    var _alphabets = $('.alphabet > a');
    var _contentRows = $('#countries-table tbody tr');

    _alphabets.click(function ()       
        var _letter = $(this), _text = $(this).text(), _count = 0;

        _alphabets.removeClass("active");
        _letter.addClass("active");

        _contentRows.hide();
        _contentRows.each(function (i) 
            var _cellText = $(this).children('td').eq(0).text();
            if (RegExp('^' + _text).test(_cellText)) 
                _count += 1;
                $(this).fadeIn(400);
            
        );                   
    );
);

这里是Demo 链接...

谢谢...

【问题讨论】:

【参考方案1】:

仅在文本不等于All时应用Regex

$(function () 
    var _alphabets = $('.alphabet > a');
    var _contentRows = $('#countries-table tbody tr');

    _alphabets.click(function () 
        var _letter = $(this),
            _text = $(this).text(),
            _count = 0;

        _alphabets.removeClass("active");
        _letter.addClass("active");

        _contentRows.hide();
        _contentRows.each(function (i) 
            var _cellText = $(this).children('td').eq(0).text();
            if (_text === 'All') 
                _count += 1;
                $(this).fadeIn(400);
             else 
                if (RegExp('^' + _text).test(_cellText)) 
                    _count += 1;
                    $(this).fadeIn(400);
                
            
        );
    );
);

Check Fiddle

【讨论】:

【参考方案2】:

只显示所有tr onclick()

$('a').first().click(function()
$('#countries-table tbody tr').fadeIn(400);
);

link to jsfiddle

【讨论】:

【参考方案3】:

[更新]

一个简单的

只需添加这一行:

if(_text == 'All') _text = '.';

DEMO

编辑:

根据你的意愿,这个代码可以让你淡化没有单词的字母:

_alphabets.not(':first').css('opacity','0.5');
_contentRows.each(function()
    var beg = $(this).children('td:first').text().trim()[0];
    $('.alphabet a:eq('+(beg.charCodeAt(0)-64)+')').css('opacity','1.0');
);

DEMO

说明:我在这里所做的是获取所有 trs 中每个第一个 td 的第一个字母,然后将其转换为 ascii (A=65 ..) 然后减去 64,以便第一个索引从 1 (A) 开始,依此类推(因为索引 0 代表“全部”)

注意:您根本不必使用正则表达式,因为您只是比较第一个字符,您可以通过取消正则表达式来提高效率。

【讨论】:

哇,完成...感谢您的帮助... :).. 一个问题? , 如果没有数据,我们可以淡化字母 bg 颜色吗...? 例如“D”类别没有数据,我需要为字母“d”添加一个类。可以吗?

以上是关于需要显示所有选项是使用 jQuery 的基于字母的导航的主要内容,如果未能解决你的问题,请参考以下文章

基于Jquery UI的autocompelet改写,自动补全控件,增加下拉选项,动态设置样式,点击显示所有选项,并兼容ie6+

基于 URL 参数,使用 jQuery 设置下拉选项

jQuery DataTables 显示所有记录作为选项

如何使 jQuery 自动完成列表显示所有选项 onfocus 并在选择选项后隐藏?

基于两个单选按钮和选择选项的jQuery显示和隐藏divs

Django Jquery:基于选择,显示更多选择选项