Как я могу «знать», где я щелкаю в дереве D3 с несколькими метками на узлы - PullRequest
0 голосов
/ 10 января 2019

Я делаю оргструктуру с деревом D3. В каждом узле у меня есть несколько ID. Я хотел бы нажать на свой идентификатор и получить этот идентификатор во всплывающем окне. До сих пор я могу получить ВСЕ идентификаторы узла, когда я нажимаю на ОДИН идентификатор узла. Чтобы быть точным, я использую JSON, где ВСЕ мои идентификаторы распределены, и способ отображения ВСЕХ идентификаторов моего узла:

.on('click', function () {
    window.alert(d.data.id);
})

Итак, я полагаю, мне нужна переменная X, чтобы узнать, по какому идентификатору я щелкаю и отображать:

.on('click', function () {
    window.alert(d.data.id[X]);
})

Вопрос в том, как я могу получить этот X, ИЛИ есть ли лучший способ добиться этого (я действительно не знаю js)

Я действительно застрял на этом, спасибо, что прочитали.

РЕДАКТИРОВАТЬ: я добавлю больше моего кода для ясности:

    nodeEnter.append('text').each(function (d) {
    var j = 0;
    while (d.data.id[j] && d.data.id[j] != "") {
        d3.select(this)
            .style("fill", "black")
            .style("text-anchor", "middle")
            .attr('cursor', 'pointer')
            .on('click', function () {
                alert(d.data.id[j]);
            })
            .append('tspan')
            .text(d.data.id[j])
            .append('tspan')
            .text(d.data.label[j]);
            j++;
    }
})

id - это массив идентификаторов в JSON. Каждый узел содержит массив id. Поэтому мне нужно связать «j» и вещи, которые я пишу (id и label).

1 Ответ

0 голосов
/ 10 января 2019

Есть лучший способ

Добавьте скрытое HTML-поле к каждому узлу и, нажав, найдите это поле и получите его значение

.on('click', function () {
    alert($(this).find("[type=hidden]").val());
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...