diff --git a/src/dom.rs b/src/dom.rs index 06faf33..62506b8 100644 --- a/src/dom.rs +++ b/src/dom.rs @@ -592,9 +592,12 @@ impl DomBuilder where A: AsRef { #[inline] pub fn class(self, name: B) -> Self where B: MultiStr { + let list = self.element.as_ref().class_list(); + name.each(|name| { - dom_operations::add_class(self.element.as_ref(), name); + dom_operations::add_class(&list, name); }); + self } @@ -690,7 +693,7 @@ impl DomBuilder where A: AsRef { where B: MultiStr + 'static, C: Signal + 'static { - let element = self.element.as_ref().clone(); + let list = self.element.as_ref().class_list(); let mut is_set = false; @@ -700,7 +703,7 @@ impl DomBuilder where A: AsRef { is_set = true; name.each(|name| { - dom_operations::add_class(&element, name); + dom_operations::add_class(&list, name); }); } @@ -709,7 +712,7 @@ impl DomBuilder where A: AsRef { is_set = false; name.each(|name| { - dom_operations::remove_class(&element, name); + dom_operations::remove_class(&list, name); }); } } diff --git a/src/dom_operations.rs b/src/dom_operations.rs index 4ab4ee2..24ebfa1 100644 --- a/src/dom_operations.rs +++ b/src/dom_operations.rs @@ -1,5 +1,5 @@ use wasm_bindgen::UnwrapThrowExt; -use web_sys::{Node, HtmlElement, Element}; +use web_sys::{Node, HtmlElement, Element, DomTokenList}; #[inline] @@ -47,13 +47,13 @@ pub(crate) fn set_focused(element: &HtmlElement, focused: bool) { } #[inline] -pub(crate) fn add_class(element: &Element, name: &str) { - element.class_list().add_1(name).unwrap_throw(); +pub(crate) fn add_class(list: &DomTokenList, name: &str) { + list.add_1(name).unwrap_throw(); } #[inline] -pub(crate) fn remove_class(element: &Element, name: &str) { - element.class_list().remove_1(name).unwrap_throw(); +pub(crate) fn remove_class(list: &DomTokenList, name: &str) { + list.remove_1(name).unwrap_throw(); }