我正在尝试将click事件绑定到使用d3.js数据动态生成的元素。
d3.select("#mylist").selectAll('li').data(data_arr).enter().append("li").html(
function(d)
{
var element = document.createElement('div');
element.innerHTML = '<div id="innerDiv"></div>';
var divToClick = element.querySelector('#innerDiv');
//Using jquery to get cross browser event binding
$(divToClick).click(function(){
alert('hello!');
});
return element.innerHTML;
});
我知道问题是我正在返回一个字符串(innerHTML)但是如果我返回该元素它就不起作用。有什么帮助吗?
(真正的代码要复杂得多,我只是在这里复制了重要的部分)。
答案 0 :(得分:4)
更多d3方式是
d3.select("#mylist").selectAll('li').data(data_arr).enter()
.append("li")
.append("div")
.on("click", function() { alert("hello!"); });
答案 1 :(得分:0)
这是答案。
var li_arr = d3.select("#mylist").selectAll('li').data(data_arr).enter().append("li").html(
function(d)
{
var element = document.createElement('div');
element.innerHTML = '<div id="innerDiv"></div>';
return element.innerHTML;
});
li_arr.select('#innerDiv').each(function(d,i)
{
var mydiv = d3.select(this);
mydiv.on('click',function(){
alert('hello');
});
});