Jquery - 仅为每个响应显示一个元素 - JSON

时间:2014-04-09 08:55:29

标签: jquery html css

我有一个列表,我从mysql表输出每一行,在这个列表中我有一个搜索功能,你可以搜索不同的关键字。

所以首先我有一个jquery函数输出我的mysql表中的每个项目,另一个函数在每个输入的搜索字段上触发。

我的代码是这样的:

('.rbmSearchFeild').on('input', 
    function(){
        var rbCustomSearch = $('.rbmSearchFeild').val();
        if( !$(this).val() ) {
            $('.rbItem li.non').show();
            $('.rbItem li.search').remove();
        } else {
            $.getJSON('link to my custom search function?searchtag='+rbCustomSearch, function(data) {
                $.each(data, function( index, value ) {
                    $('.rbItem li.non').hide();
                    $('.rbItem').append('<li class="'+value.name+' search"><img src="'+value.picture+'" /><span>'+value.name+'</span></li>');
                });
            });
        }
    });

因此,如果搜索字段为空,它将显示整个列表,但是开始键入它将隐藏这些项目并仅显示搜索项目。但是现在使用我的代码,它为我输入的每个搜索字母一遍又一遍地显示相同的项目。

我怎样才能只输出一次项目?

提前致谢:)

1 个答案:

答案 0 :(得分:1)

更改代码的else部分,如下所示:

else {
        $.getJSON('link to my custom search function?searchtag='+rbCustomSearch, function(data) {
           $('.rbItem').empty(); // empty the previous results
            $.each(data, function( index, value ) {
                $('.rbItem li.non').hide();
                $('.rbItem').append('<li class="'+value.name+' search"><img src="'+value.picture+'" /><span>'+value.name+'</span></li>');
            });
        });
    }