Richten Sie die automatische Vervollständigung für jedes Element in Ihrer Auswahl getrennt ein. Verwenden Sie dabei einen Abschluss, um einen Verweis auf das relevante Element zu halten. Etwas wie folgt aus:
$('input.autocomplete').each(function(i, el) {
el = $(el);
el.autocomplete({
source: function(req, add) {
var id = el.attr('id');
alert(id);
}
});
});
Alternative (edit)
Ich sehe nicht, warum es eine solche Widerstand each()
zu verwenden: es funktioniert, der Code ist sehr klar und lesbar, und es bringt keine Probleme mit der Effizienz; aber wenn Sie entschlossen sind zu vermeiden, each()
, hier ist eine Alternative ...
* BITTE BEACHTEN SIE: Der folgende Ansatz beruht (ein bisschen) auf den Interna von jQuery Autocomplete, so würde ich die erste Option empfehlen .. Aber die Wahl liegt bei dir.
$('input.autocomplete').autocomplete({
source: function(req, add) {
var id = this.element.attr('id');
alert(id);
}
});
});
das funktionieren wird, zumindest bis/wenn sie nicht die Art und Weise der source()
Funktion innerhalb der autocomplete
Plugin aufgerufen ändern.
So, Sie haben zwei Möglichkeiten ... etwas für jeden.
Was die Absicht ist? Um eine Quelle basierend auf der ID der ausgewählten Autovervollständigung auszuwählen? – jcolebrand
Er möchte ein generisches func machen, um automatisch zu vervollständigen, egal welche Feld-ID übergeben wird. – Hollister
@Hollister, danke, aber das hat nicht geklärt. Helfen Sie so oft? Warum muss er die Quelle anhand des Elements auswählen, an das die Autovervollständigung angehängt ist? Es klingt, als müsste er den Codeblock einmal für jedes Autocomplete-Element oder einmal für jeden Codeblocktyp erstellen. Dies ist nicht, wie Sie DRY tun, indem Sie einen if-Block innerhalb einer Source-Control-Definitionsstruktur setzen.Es macht nur komplexeren Code. – jcolebrand