制作更简单的函数jquery?
我的页面上几乎没有自动完成功能,但我有一个问题,一切正常,但问题是我不知道我将如何使用ID,也许我可以使用ID创建一个函数并创建一些数组,这样我可以轻松维护代码,这就是我现在拥有的吗制作更简单的函数jquery?,jquery,function,autocomplete,Jquery,Function,Autocomplete,我的页面上几乎没有自动完成功能,但我有一个问题,一切正常,但问题是我不知道我将如何使用ID,也许我可以使用ID创建一个函数并创建一些数组,这样我可以轻松维护代码,这就是我现在拥有的吗 $('#autocomplete-1').autocomplete({ source: autocompleteDataSource, minLength: 3, delay: 800, appendTo: '#au
$('#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,然后循环到函数中吗?如果向所有自动完成元素添加一个空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
的后续子级,这取决于您的布局(当上面有“?”时)尝试以下方法:
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();
}
}
});
});
您可以执行以下操作,使用带开头的选择器:
$("[id^='autocomplete-']").autocomplete
rest of it
然后把身份证作为
var id = $(this).attr("id").split("autocomplete-")[1]
然后
var ui = $("#ui-id-_" + id)
这将为您提供id。因此您不需要保留数组作为引用,您可以从元素中获取id
编辑:
您真正想要的是什么,简化jquery函数?唯一的问题是append?你能写下整个函数吗?我还是想附加到不同的ID上?这让我有个问题附加到:“#auto-complete-1”,我不能传递到autocomplete var ID???@ThinkDifferent是的,对不起,我没有注意到这一点。你明白了吗?唯一的问题是append@Gorostas对不起,对不起,我错过了那个。它现在已经修复:)这是伟大的伙伴,txanks,任何运气可能使数组dinamicaly获得所有自动完成和ud,并使数组,如果我在页面上添加新的自动完成将工作great@Gorostas我已经更改了代码,请现在再试一次。很好,但是这样,如果我得到结果,自动完成不会显示?我不知道为什么?
$("[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();
}
}
});