Если бы вы не нашли решение, чтобы выделить детей узла при наведении курсора мыши парят один, вот моя попытка, и она работает хорошо : обработчик
Событие:
cy.on('mouseover', 'node', function(e){
var sel = e.cyTarget;
cy.elements().difference(sel.outgoers()).not(sel).addClass('semitransp');
sel.addClass('highlight').outgoers().addClass('highlight');
});
cy.on('mouseout', 'node', function(e){
var sel = e.cyTarget;
cy.elements().removeClass('semitransp');
sel.removeClass('highlight').outgoers().removeClass('highlight');
});
В принципе, все элементы фильтруются, если они не являются зависающим узлом или его прямыми дочерними элементами («outgoers»), и к ним добавляется класс semptansp.
Затем класс 'highlight' добавляется к зависающему узлу и всем его дочерним элементам.
Пример стиля для 'изюминки' и 'semitransp' класса:
var cy = cytoscape({
elements: [ {...} ]
style: [
{...},
{
selector: 'node.highlight',
style: {
'border-color': '#FFF',
'border-width': '2px'
}
},
{
selector: 'node.semitransp',
style:{ 'opacity': '0.5' }
},
{
selector: 'edge.highlight',
style: { 'mid-target-arrow-color': '#FFF' }
},
{
selector: 'edge.semitransp',
style:{ 'opacity': '0.2' }
}
]
});
Привет Макс, спасибо за ответ. Как это можно использовать с наведением мыши для отображения только подключенных узлов к отдельному узлу? – moonlife
Я также попробовал eles.neighborhood() и до сих пор не добился успеха. Я просмотрел все примеры на js.cytoscape.com, gists, codepens и т. Д. Кто-нибудь успешно реализовал onhover возможности выделить узлы? Возможно, это ошибка? – moonlife