简体   繁体   English

addeventlistener到 <div> 附加在d3中

[英]addeventlistener to <div> appended in d3

I am trying to add events (addeventlistner) to multiple elements that are appended with d3.However, when I click on , it won't trigger the attached "alert".Interestingly, this works on <div> that I manually add inside .Could anyone shed light on this? 我正在尝试将事件(addeventlistner)添加到d3附加的多个元素中。但是,当我单击时,它不会触发附加的“警报”。有趣的是,这适用于我在<div>中手动添加的内容。有人可以阐明这一点吗?

d3.csv("output1.csv",function(data){    
var width = 700,
    height = 600;   
d3.select('body').selectAll("div")
    .data(data)
    .enter()
    .append("div")
    .style("width",30)
    .style('height',30)
    .style("background-color",function(d){
        return d.color;
}) 
var divs = document.getElementsByTagName("div") // this returns array of div elements    
function show(){
        alert("ya")
    }   
for (var i = 0; i < divs.length; i++) {
            divs[i].addEventListener('click',function(){
        alert("yaho")
    })
  } 
})

Since your are using d3, use d3 event listeners as shown below. 由于您使用的是d3,因此请使用d3事件监听器,如下所示。

var divs = d3.select('body').selectAll("div")
        .data(data)
        .enter()
        .append("div")
        .style("width",30)
        .style('height',30)
        .style("background-color",function(d){
            return d.color;
        });

divs.on("click",function(){
          alert("yaho")             
      });

Or 要么

function show(){
   alert("Hi");
}

divs.on("click",show);

Listeners bonded with addEventListeners will also work. 与addEventListeners绑定的侦听器也将起作用。 Here is the working fiddle using similar code. 这是使用类似代码的工作小提琴。 JSFiddle 的jsfiddle

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM