当你使用jQuery UI autocompleter,你可以从无证element
属性的元素有关的autocompleter实例:
source: function(request, response) {
if (this.element && this.element[0]) {
display("source triggered for #" + this.element[0].id);
}
}
Live example
this.element
是一个jQuery包装对于自动完成器所附的元素,所以this.element[0]
是原始DOM元素。
但是使用未公开的信息总是有风险的,它可以在点发布之间更改或消失。按照SadullahCeran的建议使用闭包会更可靠。我会做略有不同:
$("#input1, #input2").each(function(){
var $element = $(this); // `element` is a jQuery wrapper around the element
$(element).autocomplete({
source:function(request, response) {
// get the options relevant to `element`
});
});
...只是因为那时你不依赖于使用id
值。但这是一个小问题。是的,上述确实最终创建了两个函数对象,但这并不是什么坏事。如果有大量的参与代码和你担心有它的两个副本在内存中(这是几乎可以肯定不是问题),只是有函数调用到另一个函数:
$("#input1, #input2").each(function(){
var $element = $(this); // `element` is a jQuery wrapper around the element
$(element).autocomplete({
source:function(request, response) {
return getOptionsFor(element, request, response);
});
});
function getOptionsFor(element, request, response) {
// get the options for `element`
}
其中的jquery自动完成插件是你在用吗? – ustun
jquery ui自动完成,但我怀疑它不管... – elvenbyte
@elvenbyte:这将很重要,答案完全取决于autocompleter插件的实现。 –