Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(246)

Unified Diff: scoped_selectors.asciidoc

Issue 14109034: Recipes for using CSS Selectors with dart:html (Closed) Base URL: https://github.com/dart-lang/cookbook.git@master
Patch Set: Incorporated changes recommended by Seth Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: scoped_selectors.asciidoc
diff --git a/scoped_selectors.asciidoc b/scoped_selectors.asciidoc
new file mode 100644
index 0000000000000000000000000000000000000000..9d9cd1c4fcf1ca0f289303bee6e03e9d36e0921b
--- /dev/null
+++ b/scoped_selectors.asciidoc
@@ -0,0 +1,47 @@
+=== Using CSS selectors within a limited scope
+
+==== Problem
+
+You want to find elements that are contained by a particular element.
+
+==== Solution
+
+Call the `query()` or `queryAll()` methods on a DOM element. Invoking one of
+these methods on an element restricts the scope of the query to the that
Kathy Walrath 2013/04/30 22:48:54 the that -> that
shailentuli 2013/05/06 08:33:21 Done.
+element's descendants:
+
+--------------------------------------------------------------------------------
+containerElement.query(cssSelector);
+containerElement.queryAll(cssSelector);
+--------------------------------------------------------------------------------
+
+==== Examples
+
+Consider the following table of user records:
+
+--------------------------------------------------------------------------------
+<table>
+ <tr><td>Jose</td><td class='status'>Accepted</td></tr>
+ <tr><td>Marie</td><td class='status'>Accepted</td></tr>
+ <tr><td>Kwame</td><td class='status'>Accepted</td></tr>
+ <tr><td>Rohan</td><td class='status'>Accepted</td></tr>
+</table>
+--------------------------------------------------------------------------------
+
+The following code attaches an event handler to each <tr>. When a <tr> is
+clicked, the text within the matching descendant <td> toggles:
+
+--------------------------------------------------------------------------------
+queryAll('tr').forEach((element) {
+ element.onClick.listen((event) {
+ var record = event.currentTarget.query('.status');
+ record.innerHtml = record.innerHtml == 'Accepted' ? 'Declined' : 'Accepted';
+ });
+});
+--------------------------------------------------------------------------------
+
+Because the query is scoped to the just-clicked row, cells with the 'status'
+class in in other rows are not affected.
Kathy Walrath 2013/04/30 22:48:54 in in -> in
shailentuli 2013/05/06 08:33:21 Done.
+
+Note the use of `queryAll()` as a top-level function in the code above. Used
+in this manner, `queryAll()` is scoped to the entire document.

Powered by Google App Engine
This is Rietveld 408576698