1

我正在尝试递归触发 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 设置的“单击”事件处理程序。

4

1 回答 1

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();
}
于 2012-11-16T15:16:06.243 回答