aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/node.rs
diff options
context:
space:
mode:
authorMs2ger <ms2ger@gmail.com>2014-12-05 14:58:48 +0100
committerMs2ger <ms2ger@gmail.com>2014-12-08 11:58:59 +0100
commit54c0601950ac862d8f4dbf30a31df9ca6a676c9a (patch)
tree2df4e019e7515e13eb06dbb2a42caaca8218c4a7 /components/script/dom/node.rs
parentea907c1311051506bc3e7ef6fef8857968c71387 (diff)
downloadservo-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.rs11
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