Почему бы не добавить события способом d3
, поскольку вы уже используете d3
?
В функции onClick
вы можете привязать событие click
к входу # myCheck.
div.select('input#myCheck').on('click', function () {
if(this.checked) // checking if the checkbox is checked
onClaim(d.executionId);
});
И, пожалуйста, опубликуйте рабочий фрагмент, который облегчает ответ (так как в вашем сообщении отсутствовали определения div
, mini
и т. Д. В любом случае, я создал фрагмент с использованием примера кода здесь:
var svg = d3.select('svg#chart');
var div = d3.select('div.tooltip');
var data = [{id: 1, executionId: 1}, {id: 2, executionId: 2}];
svg.append("g").selectAll("miniItems")
.data(data)
.enter().append("rect")
.attr("id", "rect")
.attr("x", 100)
.attr("y", function(d,i) {return (i*100);})
.attr("width", 100)
.attr("height", 15)
.style("stroke", "grey")
.on("click", onClick);/*on click of d3 element this function is invoked*/
function onClick(d){
let content;
content = "<div style='background: white;width:70px; box-shadow:3px 3px 5px #797878;height:30px; padding:8%'><input type='checkbox' id='myCheck'/>"+ "claim" + "</div>";
div.html(content)
.style("left", (d3.event.pageX) + "px")
.style("top", (d3.event.pageY) + "px")
.style("display", "block");
div.select('input#myCheck').on('click', function () {
if(this.checked)
onClaim(d.executionId);
})
}
function onClaim(value){/*this function is not executed*/
console.log(value);
}
div.tooltip {
position: absolute;
}
<script src="https://d3js.org/d3.v4.min.js"></script>
<svg id="chart" width="400" height="400"></svg>
<div class="tooltip">
</div>
Надеюсь, это поможет.