2015-07-27 3 views
0

я создаю несколько d3 прямоугольников и дать им каждое событие Щелка: Сначала я создал контейнер:программен получить доступ к d3 прямоугольнику на событии нажатия

var svgContainer = d3.select("#Container") 
           .append("svg") 
           .attr("width", 720) 
           .attr("height", 45); 

затем в для цикла я создаю каждый прямоугольник внутри контейнер:

var rectangle = svgContainer.append("rect") 
             .attr("x", 10 + xAppend) 
             .attr("y", 5) 
             .attr("width", 120) 
             .attr("height", 35) 
             .attr("stroke", "black") 
             .attr("name", name) 
             .on("click", function() { 
              // Click event... 
              //... 
             }); 

Теперь в другой функции я хочу вызвать эту функцию щелчка. Переменная 'rectangle' не является глобальной, она создается внутри цикла for, и я создаю 6 прямоугольников из цикла for.

То, что я сделал до сих пор внутри другую функцию:

var tempContainer = d3.select("#Container"); 
var test = tempContainer.selectAll("rect"); 

Это дает мне массив 1 объект и этот объект представляет собой массив из 6 прямоугольников, то я цикл по массиву, чтобы найти прямоугольник, который я хочу.

for (var i = 0; i < test[0].length; i++) { 
    if (search.item.desc == test[0][i].attributes[5].value) 
    { 
     var testing = test[0][i]; 
     //testing.attributes[5].value works fine 
     //testing.click();  does not work 
     //testing.on('click')();  does not work 
    } 
} 

Внутри для цикла переменной «тестировании» представляет собой прямоугольник, я хочу, я могу получить доступ к его атрибутам, как я сделал в заявлении, если выше. Но я не могу получить доступ и активировать функцию щелчка.

+0

Дубликат вы упомянули не работает для меня. Я прочитал его, попробовал ответы, поэтому почему я написал в своем вопросе, что «.on (« click »); не работает. – DanC225

ответ

0

на кнопку функции событий можно получить с помощью следующих действий:

testing.__onclick(); 
+0

Может кто-нибудь объяснить, почему должно быть «__» перед onclick(); – DanC225