我的页面上几乎没有自动完成,但我有一个问题,一切正常,但问题是,我不知道我将如何#ID,也许我可以做一个函数,用ID做一些数组,这样我可以方便地维护代码,这是我现在有什么?
$('#autocomplete-1').autocomplete({
source: autocompleteDataSource,
minLength: 3,
delay: 800,
appendTo: '#auto-complete-1',
select: autocompleteOnSelect,
open: function () {
setTimeout(function () { $("#ui-id-1").show(); }, 100);
},
response: function (event, ui) {
if (ui.content.length === 0) {
$(this).val("No results found");
} else {
$(this).empty();
}
}
});
$('#autocomplete-2').autocomplete({
source: autocompleteDataSource,
minLength: 3,
delay: 800,
appendTo: '#auto-complete-2',
select: autocompleteOnSelect,
open: function () {
setTimeout(function () { $("#ui-id-2").show(); }, 100);
},
response: function (event, ui) {
if (ui.content.length === 0) {
$(this).val("No results found");
} else {
$(this).empty();
}
}
});
$('#autocomplete-3').autocomplete({
source: autocompleteDataSource,
minLength: 3,
delay: 800,
appendTo: '#auto-complete-3',
select: autocompleteOnSelect,
open: function () {
setTimeout(function () { $("#ui-id-3").show(); }, 100);
},
response: function (event, ui) {
if (ui.content.length === 0) {
$(this).val("No results found");
} else {
$(this).empty();
}
}
});需要使数组中的所有ID,然后循环成函数?
发布于 2014-08-22 10:03:50
试试这个:
var arr = $('[id^=autocomplete-]');
$.each(arr, function(index, obj){
$('#autocomplete-' + (index+1)).autocomplete({
source: autocompleteDataSource,
minLength: 3,
delay: 800,
appendTo: '#autocomplete-' + (index+1),
select: autocompleteOnSelect,
open: function () {
setTimeout(function () { $('#ui-id-' + (index+1)).show(); }, 100);
},
response: function (event, ui) {
if (ui.content.length === 0) {
$(this).val("No results found");
} else {
$(this).empty();
}
}
});
});发布于 2014-08-22 10:01:58
如果将空的CSS类(如.autocomplete {})添加到所有自动完成元素中,则可能会对函数进行如下更改:
$('.autocomplete').autocomplete({
source: autocompleteDataSource,
minLength: 3,
delay: 800,
appendTo: this.id,
select: autocompleteOnSelect,
open: function () {
setTimeout(function () { $(this). ??? show(); }, 100);
},
response: function (event, ui) {
if (ui.content.length === 0) {
$(this).val("No results found");
} else {
$(this).empty();
}
}
});基本上,您只需要一个泛型函数,而不需要任何ID数组。
唯一的办法是以动态的方式识别ID为#ui-id-2的后续子级,这取决于您的布局(“?”(以上)
发布于 2014-08-22 10:03:57
您可以这样做,使用从选择器开始:
$("[id^='autocomplete-']").autocomplete
rest of it那就把身份证
var id = $(this).attr("id").split("autocomplete-")[1]然后
var ui = $("#ui-id-_" + id)这会给你身份证明。因此,您不需要保留一个数组作为引用,您可以从元素中获取id。
编辑:
$("[id^='autocomplete-']").autocomplete({
source: autocompleteDataSource,
minLength: 3,
delay: 800,
var id = $(this).attr("id").split("autocomplete-")[1] //gives you the id
appendTo: '#auto-complete-' + id,
select: autocompleteOnSelect,
open: function () {
setTimeout(function () { $("#ui-id-" + id).show(); }, 100);
},
response: function (event, ui) {
if (ui.content.length === 0) {
$(this).val("No results found");
} else {
$(this).empty();
}
}
});https://stackoverflow.com/questions/25444261
复制相似问题