下面我有一些代码,这些代码很奇怪,我的意思是,它什么都不做,我认为:包含函数有一些问题
$(".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();
}
});
},
});
主要是,当我在输入字段中输入内容时没有任何反应。我希望有一些项目,其中包含部分内容var文本。
如果我反转某些代码行,此代码会过滤所有项目:
$(".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项都被隐藏,但那些不包含内容文本的项目应该是可见的。< / p>
问题出在哪里? 谢谢你的帮助。
答案 0 :(得分:0)
排序的关键是将过滤器逻辑更改为:
if($(this).is(':contains('+content+')')) {
另外,要使:包含不区分大小写:
$.expr[":"].contains = $.expr.createPseudo(function(arg) {
return function( elem ) {
return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});