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();
}