molily: Jquery UI Autocomplete / Selektion von Elementen

Beitrag lesen

Hallo!

  1. Ist es sinnvoll, den JS-Code für jede Zeile zu wiederholen?

Nein. JavaScript-Code solltest du nicht mit PHP generieren, schon gar nicht denselben Code immer wieder. Notiere ihn besser einmal in einer externen Datei gemäß dem Paradigma »Unobtrusive JavaScript«. Schreibe den JavaScript-Code dann so flexibel, dass er mehrfach angewendet werden kann bzw. sich automatisch auf verschiedene Elemente im DOM anwendet.

Was du mit PHP generieren solltest, ist HTML-Markup und ggf. JSON. Im HTML lassen sich üblicherweise alle Infos unterbringen, die das JavaScript benötigt.

(Das sind keine ewigen Wahrheiten, sondern Faustregeln, die einem helfen, gut strukturierten Code zu schreiben.)

  1. Kann man das über ein Konstrukt ala jQuery(’input[id^="..."]’) einfangen?

Im Prinzip ja, das ist einer der Schritte, um den Code wiederverwendbar zu machen.

Arbeite mit einem passenden Selektor, z.B. mit Klassen und dem Klassenselektor. Von einem Element aus kannst du andere, zugehörige finden:

http://api.jquery.com/find/
http://api.jquery.com/parents/
http://api.jquery.com/siblings/

  1. Kann mir einer das ".data("autocomplete")._renderItem =" erklären?

.data('autocomplete') liefert die Instanz von jQuery UI Autocomplete.

Diese hat (bzw. erbt) wohl eine Methode namens _renderItem. Diese Methode wird hier überschrieben.

-- Warum der Punkt vor dem "data"?

Der Punkt ist der Operator zum Zugriff auf Objekteigenschaften. Schema:

objekt.eigenschaft

Wertzuweisung:

objekt.eigenschaft = wert

-- Warum data?

Das ist die data-Funktion von jQuery. So kommst du an JavaScript-Werte, die an dem Element gespeichert sind. Das macht jQuery UI mit der Autocomplete-Instanz.

-- Warum "autocomplete"

Das ist einfach der Name, unter dem die jQuery-UI-Autocomplete-Instanz intern gespeichert ist.

(Bei der aktuellen Version von jQuery UI muss ich übrigens .data('uiAutocomplete') schreiben. Getestet hier.)

Mathias