Built with blockbuilder.org
Last active
December 8, 2016 11:35
-
-
Save Fil/274571d6f9001a73f58e0b811e24c055 to your computer and use it in GitHub Desktop.
events and ES6 arrow functions [UNLISTED]
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
license: mit |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<head> | |
<meta charset="utf-8"> | |
<script src="https://d3js.org/d3.v4.min.js"></script> | |
<style> | |
body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; } | |
</style> | |
</head> | |
<body> | |
<script> | |
// Feel free to change or delete any of the code you see in this editor! | |
var svg = d3.select("body").append("svg") | |
.attr("width", 960) | |
.attr("height", 500) | |
// With regular functions I use _this_ to react to an event | |
svg.selectAll('text') | |
.data([1,2]) | |
.enter() | |
.append("text") | |
.text((d) => "hover me " + d) | |
.attr("y", (d,i) => 110 + 50 * i) | |
.attr("x", 120) | |
.style("font-size", 36) | |
.style("font-family", "monospace") | |
.on('mousemove', function() { | |
d3.select(this) | |
.text(Math.random()).attr('fill', 'blue') | |
} | |
); | |
// With arrow functions, _this_ is not available, and I need to add an id | |
svg.selectAll('text') | |
.data([1,2,3,4]) | |
.enter() | |
.append("text") | |
.attr('id', (d,i) => "data-" + i) | |
.text((d) => "hover me " + d) | |
.attr("y", (d,i) => 130 + 50 * i) | |
.attr("x", 120) | |
.style("font-size", 36) | |
.style("font-family", "monospace") | |
.on('mousemove', (d,i) => | |
svg.select("#data-" + i) | |
.text(Math.random()).attr('fill', 'green') | |
); | |
// d3.event.target to the rescue | |
svg.selectAll('text') | |
.data([1,2,3,4,5,6]) | |
.enter() | |
.append("text") | |
.text((d) => "hover me " + d) | |
.attr("y", (d,i) => 150 + 50 * i) | |
.attr("x", 120) | |
.style("font-size", 36) | |
.style("font-family", "monospace") | |
.on('mousemove', () => d3.select(d3.event.target) | |
.text(Math.random()).attr('fill', 'red') | |
); | |
</script> | |
</body> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment