2013-11-28 2 views
0

У меня есть элементы, написанные с помощью d3 в браузере. Я хочу выделить некоторые из них в зависимости от их собственности. Например, у меня есть продукты, мыла, в которых мыльные элементы будут иметь тип [for_bath (OR) for_cloth_wash]. Я хочу выбрать те элементы, которые относятся к for_bath во всех мылах и продуктах, вместе взятых и нарисованных вместе на одном экране.Как выбрать элементы в d3 с определенным значением свойства

Как?

Кроме того, мое другое сомнение - document.getElementById() не работает внутри кода выбора d3. Я правдивый или недосмотр?

EDIT

var data = {"soaps":{"lux":"bath", "cinthol":"bath", "rin","cloth_washing"}, 
      "shoes":{"valentine":"teens", "bootie":"kids", "kuuch":"kids"}}; 

// Now I want to show all bath soaps highlighted, may be with a circle around them. 
var svg = d3.select("svg") 
      .selectAll(".items") 
      .data(data).enter() 
      .append("circle") 
      // highlighting styles 
; 

Здесь я хочу, чтобы выбрать ванну мыла и вокруг них до.

ответ

0

Вы не предоставили нам никакого кода, поэтому я собираюсь угадать здесь. То, что вы, вероятно, ищете, - CSS attribute selectors. Так что если вы хотите, чтобы выбрать элементы, которые имеют множество атрибутов soap к for_bath, вы могли бы сделать

d3.selectAll("[soap=for_bath]"); 

Это только для элементов DOM. Если вы говорите об элементах данных, то вы можете использовать .filter() method:

data.filter(function(d) { return d.soap == "for_bath"; }); 

Что касается вашего второго вопроса, то я не уверен, что вы имеете в виду. Аргументы d3.select() или d3.selectAll() являются DOM-селекторами, поэтому document.getElementById() здесь не имеет смысла. Однако вы, безусловно, можете использовать другие функции:

d3.selectAll("something").each(function() { 
    d3.select(this); // the current element 
    document.getElementById("something"); // another element 
}); 
+0

Благодарим вас за то, что нашли время. Я улучшу свой вопрос с помощью некоторого кода. –

Смежные вопросы