Я создал временную шкалу (с элементами) с помощью библиотеки vis.js. Кроме идентификатора, каждый элемент имеет также другие атрибуты, такие как content и className. Что я пытаюсь сделать, так это щелкнуть элемент и автоматически выделить все остальные элементы, которые имеют то же имя класса, что и тот, который был нажат.

До сих пор мне удавалось получить только идентификатор выбранного элемента, но не другую информацию, такую ​​как имя класса. Можно ли получить атрибут className? Есть ли способ сделать это через vis.js? заранее спасибо

0
MTs 14 Фев 2018 в 17:02

1 ответ

Лучший ответ

Я постараюсь помочь. Однако я все еще новичок в временной шкале vis.js.

В основном я просто фильтрую и возвращаю элементы временной шкалы для первого выбранного элемента и получаю его className. Затем я снова запрашиваю временную шкалу с просьбой вернуть мне все элементы с этим className.

Наконец, я использую метод setSelection с моей корзиной идентификаторов для выбора и выделения элементов на временной шкале.

timeline.on('select', function (props) {

    // create empty array to hold ids of items with the same class name
    var sameClassNameIds = []

    // selected item/s ids given to you as an array on selection
    console.log(props.items)

    // define a variable which get and hold the selected item's object by filtering the timeline
    var selectedItem = items.get({
        filter: function (item) {
            //return id from timeline matching id in props.items
            return props.items.indexOf(item.id) !== -1;
        }
    });

    // here is the selected item's className
    var selectedClassName = selectedItem[0].className

    // retrieve all items with the above className
    var sameClassNameItems = items.get({
        filter: function (item) {
            //return items from timeline matching query
            return item.className === selectedClassName;
        }
    });

    // loop over retrieved array of items pushing each item id into an array
    sameClassNameItems.forEach(function (item) {
        sameClassNameIds.push(item.id)
    })

    // feed the setSelection method the array of ids you'd like it to select and highlight
    timeline.setSelection(sameClassNameIds)

});
0
Amiracle 27 Янв 2019 в 14:49