я создаю несколько 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
}
}
Внутри для цикла переменной «тестировании» представляет собой прямоугольник, я хочу, я могу получить доступ к его атрибутам, как я сделал в заявлении, если выше. Но я не могу получить доступ и активировать функцию щелчка.
Дубликат вы упомянули не работает для меня. Я прочитал его, попробовал ответы, поэтому почему я написал в своем вопросе, что «.on (« click »); не работает. – DanC225