所以我有一个更改复选框的功能
somefunction() {
d3.select("input").property("checked", true);
}
Run Code Online (Sandbox Code Playgroud)
在另一个函数中,我检测到复选框中的更改,如下所示:
d3.selectAll("input").on("change", change);
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是当它更改复选框而不点击它时,它不会将其检测为"正确"更改.我该怎么做才能让它发现其他东西将其变为"正确"的变化?
d3在它的方法中使用标准的addEventListeneron.你的问题是,改变检查属性不会引发任何事件的addEventListener听到.正确的方法是在设置预言后自己调用处理程序:
var myInput = d3.select("input");
myInput.property("checked", true);
myInput.on("change")(); // call it yourself
Run Code Online (Sandbox Code Playgroud)
完整的工作代码:
<!DOCTYPE html>
<html>
<head>
<script data-require="d3@3.5.3" data-semver="3.5.3" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.5.3/d3.js"></script>
</head>
<body>
<input type="checkbox" />
<script>
var checked = false;
setInterval(function(){
checked = !checked;
var myInput = d3.select("input");
myInput.property("checked", checked);
myInput.on("change")();
}, 2000);
d3.select("input").on("change", function(d){
console.log('checkbox changed');
});
</script>
</body>
</html>Run Code Online (Sandbox Code Playgroud)