在d3.js上以递归方式触发单击

时间:2012-11-15 16:36:01

标签: jquery d3.js

我试图以递归方式触发d3.js上的事件。

这(不涉及d3.js)有效: http://jsfiddle.net/emepyc/98HmT/

$("#b1").on("click", function() {
        var elem = $(this);    
        console.log(elem);
        console.log("Pressed");
        setTimeout(function(){console.log(elem); $(elem).trigger("click")}, 1000)
 });

但是(在d3.js上)不会:http://jsfiddle.net/emepyc/bmdKW/

d3.select("#node1").on("click", function() {
        var elem = $(this);
        console.log(elem);
        console.log("Pressed");
        setTimeout(function(){console.log(elem); $(elem).trigger("click")}, 1000)
});

有什么想法吗?

修改 似乎jQuery的“触发器”不会发送真实事件;它只调用自己的监听器。因此,它无法看到由d3设置的“click”事件处理程序。

1 个答案:

答案 0 :(得分:0)

尝试让click事件调用一个函数然后开始循环:

d3.select("#node1").on("click", function() {
    var elem = $(this);
    console.log(elem);
    console.log("Pressed");
    qwerty();
});

function qwerty() {
    setTimeout(function() {
        console.log("looping");
        qwerty2()
    }, 1000)
};

function qwerty2() {
    console.log("part 2");
    qwerty();
}