The selection.clone() function is used to clone the selected elements and inserts these clones immediately after the same elements.
Syntax:
selection.clone([deep]);
Parameters: This function accepts single parameters as mentioned above and described below:
- deep: If deep is true the descendant nodes will also be cloned.
Return Value: This function returns the clone of the element to be inserted.
Below examples illustrate the selection.clone() function in D3.js:
Example 1: When all the div are effected in the selection.
HTML
<!DOCTYPE html> < html lang = "en" > < head > < meta charset = "UTF-8" > < meta name = "viewport" path1tent=" width = device -width, initial-scale = 1 .0"> </ script > < style > h1 { color: green; } p:hover { background-color: grey; cursor: pointer; } div { width: 300px; color: #ffffff; height: 50px; background-color: green; margin: 10px; } </ style > </ head > < body > < h1 >neveropen</ h1 > < div >< span >1. Some text</ span ></ div > < div >< span >2. Some text</ span ></ div > < button >Click Here!</ button > < script > function func() { // Selecting div and // Cloning the div and // Adding html to it var div = d3.selectAll("div") .clone() .html("< span >I am cloned.</ span >"); console.log(div); var b = document.querySelector("b"); b.innerText = "This < b > tag is appended. " } let btn = document.querySelector("button"); btn.addEventListener("click", func); </ script > </ body > </ html > |
Output:
-
Before clicking the button:
-
After clicking the button:
Example 2: When only one div is effected in the selection.
HTML
<!DOCTYPE html> < html lang = "en" > < head > < meta charset = "UTF-8" > < meta name = "viewport" path1tent=" width = device -width, initial-scale = 1 .0"> </ script > < style > h1 { color: green; } p:hover { background-color: grey; cursor: pointer; } div { width: 300px; color: #ffffff; height: 50px; background-color: green; margin: 10px; } </ style > < body > < h1 >neveropen</ h1 > < div >< span > 1. Only this div is cloned. </ span ></ div > < div >< span > 2. This div will not be cloned. </ span ></ div > < button >Click Here!</ button > < script > function func() { // Selecting div and // Cloning the divs // Adding html to cloned divs var div = d3.select("div") .clone() .html("< span >I am cloned.</ span >"); console.log(div); var b = document.querySelector("b"); b.innerText = "This < b > tag is appended. " } let btn = document.querySelector("button"); btn.addEventListener("click", func); </ script > </ body > </ html > |
Output:
-
Before clicking the button:
-
After clicking the button:
Example 3: When deep is equal to true then all descendant elements are cloned.
HTML
<!DOCTYPE html> < html lang = "en" > < head > < meta charset = "UTF-8" > < meta name = "viewport" path1tent=" width = device -width, initial-scale = 1 .0"> </ script > < style > h1 { color: green; } div { width: 300px; color: #ffffff; height: 50px; background-color: green; margin: 10px; } </ style > </ head > < body > < h1 >neveropen</ h1 > < p >Descendants will also be cloned.</ p > < p > Here Descendants of div is span that will be cloned. </ p > < div >< span >1. This div will be cloned.</ span ></ div > < div >< span >2. This div will be cloned.</ span ></ div > < button >Click me</ button > < script > function func() { // Selecting div and Cloning the divs // and its descendant elements var div = d3.selectAll("div") .clone([true]) console.log(div); var b = document.querySelector("b"); b.innerText = "This < b > tag is appended. " } let btn = document.querySelector("button"); btn.addEventListener("click", func); </ script > </ body > </ html > |
Output:
-
Before clicking the button:
-
After clicking the button: