我有一个列表,我从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>');
});
});
}
});
因此,如果搜索字段为空,它将显示整个列表,但是开始键入它将隐藏这些项目并仅显示搜索项目。但是现在使用我的代码,它为我输入的每个搜索字母一遍又一遍地显示相同的项目。
我怎样才能只输出一次项目?
提前致谢:)
答案 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>');
});
});
}