diff --git a/framework/h/lifecycle.go b/framework/h/lifecycle.go index 53924d1..49ee7c0 100644 --- a/framework/h/lifecycle.go +++ b/framework/h/lifecycle.go @@ -216,6 +216,16 @@ func EvalJsOnSibling(selector, js string) ComplexJsCommand { `, selector, js)) } +func SetClassOnParent(class string) ComplexJsCommand { + // language=JavaScript + return EvalJsOnParent(fmt.Sprintf("element.classList.add('%s')", class)) +} + +func RemoveClassOnParent(class string) ComplexJsCommand { + // language=JavaScript + return EvalJsOnParent(fmt.Sprintf("element.classList.remove('%s')", class)) +} + func SetClassOnChildren(selector, class string) ComplexJsCommand { // language=JavaScript return EvalJsOnChildren(selector, fmt.Sprintf("element.classList.add('%s')", class)) diff --git a/htmgo-site/md/docs/4_interactivity/2_events.md b/htmgo-site/md/docs/4_interactivity/2_events.md index d1e27cd..534f841 100644 --- a/htmgo-site/md/docs/4_interactivity/2_events.md +++ b/htmgo-site/md/docs/4_interactivity/2_events.md @@ -69,7 +69,22 @@ js.GetWithQs(string, Qs) js.PostWithQs(string, Qs) js.ToggleClass(string) js.ToggleClassOnElement(string, string) + +// The following methods are used to evaluate JS on nearby elements. +// Use 'element' to get the element as a reference for the EvalJs methods. +js.EvalJsOnParent(string) +js.EvalJsOnSibling(string, string) +js.EvalJsOnChildren(string, string) +js.SetClassOnParent(string) +js.RemoveClassOnParent(string) +js.SetClassOnChildren(string, string) +js.RemoveClassOnChildren(string, string) +js.SetClassOnSibling(string, string) +js.RemoveClassOnSibling(string, string) + ``` +For more usages: see https://github.com/maddalax/htmgo/blob/master/htmgo-site/pages/form.go + **Example:** Evaluating arbitrary JS