diff options
author | Ms2ger <ms2ger@gmail.com> | 2014-12-05 14:58:48 +0100 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2014-12-08 11:58:59 +0100 |
commit | 54c0601950ac862d8f4dbf30a31df9ca6a676c9a (patch) | |
tree | 2df4e019e7515e13eb06dbb2a42caaca8218c4a7 /components/script/dom/node.rs | |
parent | ea907c1311051506bc3e7ef6fef8857968c71387 (diff) | |
download | servo-54c0601950ac862d8f4dbf30a31df9ca6a676c9a.tar.gz servo-54c0601950ac862d8f4dbf30a31df9ca6a676c9a.zip |
Cleanup Node::query_selector.
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r-- | components/script/dom/node.rs | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index ef655cc1bc3..9f6605569da 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -738,15 +738,12 @@ impl<'a> NodeHelpers<'a> for JSRef<'a, Node> { // Step 3. Ok(ref selectors) => { let root = self.ancestors().last().unwrap_or(self.clone()); - for node in root.traverse_preorder() { - if node.is_element() && matches(selectors, &node, &mut None) { - let elem: JSRef<Element> = ElementCast::to_ref(node).unwrap(); - return Ok(Some(Temporary::from_rooted(elem))); - } - } + Ok(root.traverse_preorder() + .filter_map(ElementCast::to_ref) + .find(|element| matches(selectors, &NodeCast::from_ref(*element), &mut None)) + .map(Temporary::from_rooted)) } } - Ok(None) } /// Get an iterator over all nodes which match a set of selectors |