0

我正在使用 JQuery 来实现动态搜索选项,当用户键入搜索文本时,列表开始 SlideUp() 那些不匹配的元素,而 SlideDown() 那些匹配的元素。我以这个网站为基础,让它工作得很好,除了一个小而紧张的细节。

当我输入一个文本时,例如 SlidesUp 5 个列表元素中的 2 个,然后当我删除之前输入的文本时,只有 4 个出现(而不是原来的 5 个)。最后隐藏的元素并不总是相同的元素。

这是我的相关代码:

$("#searchTextBoxId").change(function(){}).keyup( function () {
    $(this).change();
});
$("#searchTextBoxId").change(function(){
    var filter = $("#searchTextBoxId").val();
    if (filter){$("#ajaxListView").find("name:not(:Contains("+filter+"))").parent().parent().slideUp();$("#ajaxListView").find("name:Contains("+filter+")").parent().parent().slideDown();      
    }else{
    $("#ajaxListView").find('untipodedom').slideDown();
    $("#mst").text("Amount of elements: "+$("#ajaxListView").find('untipodedom').length);       
    }
}); 

更奇怪的是输出文本显示 5(应该显示的 div 的数量)。有任何想法吗???

4

1 回答 1

0

好的,花了很长时间才弄清楚这一点。事实证明这是一件非常愚蠢的事情。我发布这个以防它最终对某人有所帮助。

在“else”情况下,jquery“find”选择器没有正确选择。我将其更改为以下内容:

function SlideUpAndDown(filter){
    if (filter){
        $("#cListView").find("name:not(:Contains("+filter+"))").parent().parent().slideUp();
        $("#cListView").find("name:Contains("+filter+")").parent().parent().slideDown();
    } else {
        $("#cListView").find("*").parent().parent().slideDown();            
    }
}

我使用通用选择器“*”来选择 CListView 中的所有项目。就是这样,就像一个魅力。

于 2011-07-15T21:37:34.393 回答