下面我有一些代码,它工作得很奇怪,我的意思是,它什么也不做,我认为:包含函数有一些问题
$(".search").autocomplete({
source: availableTags,
appendTo: ".autocomplete",
minLength:3,
response: function(event, ui) {
var content = ui.content[0].label;
$.each($('.auto-sort'), function() {
var t = $(this);
if (("t:contains(content)")) {
return;
} else {
$(this).parent().parent().parent().hide();
}
});
},
});
主要是,当我在输入字段中输入内容时没有任何反应。我想要一些项目,其部分内容在文本中。
如果我反转某些代码行,此代码会过滤所有项目:
$(".search").autocomplete({
source: availableTags,
appendTo: ".autocomplete",
minLength:3,
response: function(event, ui) {
var content = ui.content[0].label;
$.each($('.auto-sort'), function() {
var t = $(this);
if (("t:contains(content)")) {
$(this).parent().parent().parent().hide();
} else {
return;
}
});
},
});
现在上面的内容可以工作,但它会选择所有项目,例如,如果我在输入字段中键入“tes”,则所有 .auto-sort 项目都会隐藏,但那些不包含内容文本的项目应该可见。
问题出在哪里? 感谢您的帮助。
最佳答案
排序的关键是将过滤逻辑更改为:
if($(this).is(':contains('+content+')')) {
此外,要使 :containes 不区分大小写:
$.expr[":"].contains = $.expr.createPseudo(function(arg) {
return function( elem ) {
return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});
关于javascript - Jquery 自动完成与响应,作为过滤功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38480686/