- Data Visualization with D3.js Cookbook
- Nick Qi Zhu
- 327字
- 2021-07-23 15:50:23
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.htmlHow 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.
- JavaScript實例自學手冊
- Mastering VMware vSphere 6.5
- 網絡綜合布線技術
- Hands-On Linux for Architects
- VB語言程序設計
- 大型數據庫管理系統技術、應用與實例分析:SQL Server 2005
- 大數據驅動的設備健康預測及維護決策優化
- Machine Learning with the Elastic Stack
- 基于企業網站的顧客感知服務質量評價理論模型與實證研究
- 基于敏捷開發的數據結構研究
- 學練一本通:51單片機應用技術
- Windows安全指南
- Dreamweaver+Photoshop+Flash+Fireworks網站建設與網頁設計完全實用
- RealFlow流體制作經典實例解析
- Embedded Linux Development using Yocto Projects(Second Edition)