2013-08-22 14 views

Odpowiedz

0

Możesz dokonać wyboru za pomocą jquery i przekazać to do d3.

var selection = $('.control').closest('.module'); 
var module = d3.select(selection); 

Może, ale nie musi działać w zależności od tego, czego potrzebujesz, ale może być prostym rozwiązaniem.

0

Jeśli Twój DOM jest naprawdę konkretny przykład, można wybrać węzły nadrzędne z D3, jak wspomniano w ich docs here:

Można zobaczyć węzeł nadrzędny każdej grupy sprawdzając właściwość parentNode każdej grupy array, na przykład selection [0] .parentNode.

W twoim przypadku powinien zadziałać var module = d3.select(".control").parentNode;.

1

Można dodać „najbliżej” do prototypu selekcji d3 jak ten:

d3.selection.prototype.closest = function(selector){ 
      var closestMatch = undefined; 
      var matchArr = []; 
      this.each(function(){ 
       var elm = this; 
       while(typeof elm.parentNode.matches === "function" && !closestMatch){ 
        elm = elm.parentNode; 
        if(elm.matches(selector)){ 
         closestMatch = elm; 
         matchArr.push(closestMatch); 
        } 
       } 
       closestMatch = undefined; 
      }); 
      return d3.selectAll(matchArr); 
     }