當你使用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插件的實現。 –