官术网_书友最值得收藏!

Selecting multiple elements

Often selecting a single element is not good enough, but rather you want to apply certain change to a set of elements on the page simultaneously. In this recipe, we will play with D3 multi-element selector and its selection API.

Getting ready

Open your local copy of the following file in your web browser:

https://github.com/NickQiZhu/d3-cookbook/blob/master/src/chapter2/multiple-selection.html

How to do it...

This is what the d3.selectAll function is designed for. In this code snippet, we will select three different div elements and enhance them with some CSS classes.

<div></div>
<div></div>
<div></div>

<script type="text/javascript">
 d3.selectAll("div") // <-- A
 .attr("class", "red box"); // <-- B
</script>

This code snippet produces the following visual:

Multi-element selection

How it works...

First thing you probably would notice in this example is how similar the usage of D3 selection API is when compared to the single-element version. This is one of the powerful design choices of the D3 selection API. No matter how many elements you are targeting, whether one or many, the modifier functions are exactly the same. All modifier functions we mentioned in the previous section can be applied directly to multi-element selection, in other words D3 selection is set-based.

Now with that being said, let's take a closer look at the code example shown in this section, though it is generally pretty simple and self-descriptive. At line A, the d3.selectAll function is used to select all the div elements on the page. The return of this function call is a D3 selection object that contains all three div elements. Immediately after that, on line B, the attr function was called on this selection to set the class attribute to red box for all three div elements. As shown in this example, the selection and manipulation code is very generic, and will not change if now we have more than three div elements on the page. This seems to be an insignificant convenience for now, but in later chapters we will show how this convenience can make your visualization code simpler and easier to maintain.

主站蜘蛛池模板: 东乡族自治县| 蒲城县| 乌兰浩特市| 临夏县| 来宾市| 海城市| 普安县| 龙口市| 新竹县| 绥芬河市| 茌平县| 镇雄县| 永吉县| 双流县| 贵南县| 和林格尔县| 曲阜市| 颍上县| 蓬莱市| 古田县| 淳安县| 博罗县| 荔浦县| 仁寿县| 长宁县| 民权县| 民权县| 济南市| 张家港市| 昌邑市| 濉溪县| 天等县| 龙川县| 旬阳县| 邛崃市| 六盘水市| 同德县| 南溪县| 汉沽区| 周口市| 平遥县|