隐藏时的奇怪行为用手风琴显示列表元素

时间:2013-01-05 00:45:27

标签: jquery twitter-bootstrap html-lists bootstrap-typeahead

我从我网站的问题部分发了jsFiddle

当我尝试编写代码时:

在字段中键入一些字母将使用typeahead列出名称,当在typeahead下拉列表中单击任何元素时,包含搜索的没有<li>的手风琴将隐藏,并且如果其内容与<li>匹配,其内容与搜索匹配,则只应显示匹配的<li>,其他应隐藏。

现在,所有<li>都会显示,即使它们不包含搜索内容。

我尝试修复它,但根本无法找到解决方案。

1 个答案:

答案 0 :(得分:1)

使用您的代码我将其修改为此。 显示LI后,您要搜索显示的列表并隐藏任何不符合包含选择器条件的子项

http://jsfiddle.net/jyuYB/10/演示

更改了代码:

$('#findname').typeahead({
    source: namelist,
    updater: function(item) {
        $('#ponies .accordion-group').show();
        $('#ponies .accordion-body li:not(:contains(' + item + '))').parent().parent().parent().parent().hide();
        $('#ponies .accordion-body li:contains(' + item + ')').parent().parent().parent().parent().show();
        $('#ponies .accordion-body li:contains(' + item + ')').parent().parent().parent().addClass('in');
        $('#ponies .accordion-body li').hide();
        var tmp = $('#ponies .accordion-body li:contains(' + item + ')').show();
        tmp.each(function() {
            $(this).siblings().each(function(){ $.hide() });
        });
        return item;
    },
})