是否有一个选择查询来抓取除我当前选择之外的所有内容?

时间:2013-02-22 23:37:49

标签: d3.js

在我的d3js应用程序中,当用户在特定圈子上盘旋时,我将其放大。那没问题。与此同时,我想选择“所有其他人”并使它们变小。抓住“所有其他圈子”的好查询是什么?

1 个答案:

答案 0 :(得分:4)

根据您的需要,您可以使用selection.filter或常用selection.select的鲜为人知的功能形式。

如果您使用key functions将DOM元素绑定到数据,这是推荐的方式,那么您可以过滤选择的键:http://jsfiddle.net/9TmXs/

.on('click', function (d) {

    // The clicked element returns to its original size
    d3.select(this).transition() // ...

    var circles = d3.selectAll('svg circle');
    // All other elements resize randomly.
    circles.filter(function (x) { return d.id != x.id; })
        .transition() // ...
});  

另一种通用方法是比较DOM元素本身:http://jsfiddle.net/FDt8S/

.on('click', function (d) {

    // The clicked element returns to its original size
    d3.select(this).transition() // ..

    var self = this;

    var circles = d3.selectAll('svg circle');
    // All other elements resize randomly.
    circles.filter(function (x) { return self != this; })
        .transition()
        // ...
});