<script src="https://unpkg.com/htmx.org@1.9.10"></script>
<button hx-post="/clicked" hx-swap="outerHTML">
Click Me
</button>
Die Attribute hx-post und hx-swap auf dieser Schaltfläche sagen zum HTMX:
"Wenn ein Benutzer auf diese Schaltfläche klickt, sende ein Ajax-Anfrage an "/clicked".
Die HTML-antwort ersetzt die gesamte Schaltfläche".
<a href="/blog" >Blog</a>
Dieser Anker-Tag sagt dem Browser:
"Wenn ein Benutzer auf diesen Link klickt, wird eine HTTP-GET-Anfrage an '/blog' gestellt und die Antwort in das Browserfenster geladen ".
<button hx-post="/clicked"
hx-trigger="click"
hx-target="#parent-div"
hx-swap="outerHTML" >
Click Me!
</button>
<div id="parent-div">
</div>
Dies sagt HTMX:
"Wenn ein Benutzer auf diese Schaltfläche klickt, wird eine HTTP-POST-Anfrage an '/clicked' gestellt und der Inhalt der Antwort ersetzt das Element parent-div in dem DOM."
HTMX erweitert und verallgemeinert die Kernidee von HTML als Hypertext und eröffnet viele weitere Möglichkeiten direkt innerhalb HTML.
Jetzt kann jedes Element, nicht nur Anker und Formulare, eine HTTP-Anfrage stellen.
Jedes Ereignis, nicht nur Klicks oder Formularübertragungen können Anfragen auslösen.
Mit HTTP können, nicht nur GET und POST, sondern auch POST, PUT, DELETE und PATCH verwendet werden.
Jetzt kann jedes beliebige Element, nicht nur das gesamte Fenster, Ziel der HTML-Antwort werden.
Man kann auch Triggerfilter anwenden. Darzu nutzt man eckige Klammern nach dem Ereignisnamen und schließt einen JS-Ausdruck ein. Das Ereignis wird ausgelöst wenn der Ausdruck wahr zurück gibt.
<div hx-get="/clicked" hx-trigger="click[ctrlKey]">
Control Click Me
</div>
HTMX bietet verschiedene Möglichkeiten, das zurückgegebene HTML in DOM-Baum einzubetten. Standardmäßig wird der Inhalt des Target-DOM-Elements (innerHTML) ersetzt.
| hx-swap | Attributwert |
|---|---|
| innerHTML | Ist der Standardwert. Setzt den Inhalt in das Target |
| outerHTML | Ersetzt das gesamte Target durch den zurückgegebenen Inhalt |
| afterbegin | Fügt den Inhalt vor dem ersten Child innerhalb des Targets ein |
| beforebegin | Stellt den Inhalt vor dem Target im übergeordneten Element des Targets ein |
| hx-swap | Attributwert |
|---|---|
| beforeend | Fügt den Inhalt nach dem letzten Child innerhalb des Targets ein |
| afterend | Fügt den Inhalt nach dem Target im übergeordneten Element des Targets ein |
| delete | Löscht das Target unabhängig von der Antwort |
| none | DOM-baum bleibt unverändert (betrift nicht 'Out of Band Swaps' und 'Response Headers') |
Der Kern von HTMX wird von einer Reihe von Attributen gebildet: Sie ermöglichen es, AJAX-Abfragen direkt über HTML-Attribute zu stellen:
| Attribut | Beschreibung |
|---|---|
| hx-get | Stellt eine GET-Anfrage an die angegebene URL |
| hx-post | Stellt eine POST-Anfrage an die angegebene URL |
| Attribut | Beschreibung |
|---|---|
| hx-put | Stellt eine PUT-Anfrage an die angegebene URL |
| hx-patch | Stellt eine PATCH-Anfrage an die angegebene URL |
| hx-delete | Stellt eine DELETE-Anfrage an die angegebene URL |
<div hx-put="/messages" hx-trigger="click" hx-swap="innerHTML">
Put To Messages
</div >
Dies teilt dem Browser mit:
Wenn ein Benutzer auf dieses div klickt, stelle eine PUT-Anfrage an die URL /messages und lade die
Antwort
in
das div
Standardmäßig werden AJAX-Anfragen durch das "natürliche" Ereignis eines Elements ausgelöst:
Input, textarea & select werden durch das Änderungsereignis ausgelöst.
Formular wird durch das Submit-Ereignis ausgelöst.
Alles andere wird durch das Klick-Ereignis ausgelöst.
Wenn ein anderes Verhalten erwünscht ist, kannst das Attribut hx-trigger verwendet werden.
<div hx-post="/mouse_entered" hx-trigger="mouseenter">
[Here Mouse, Mouse!]
</div>