Не
Вы должны не изменить стили элемента Dygraph
с помощью jQuery
. Поскольку Dygraph
будет постоянно менять стили, ваши jQuery
стили больше не будут действовать.
Опция
Dygraph предоставляет возможность указать другой элемент DOM, который будет легендой. Это означает, что вы можете поместить содержимое легенды в другой div или любой другой элемент DOM, который вы хотите.
Опция называется labelsDiv
. Подробнее здесь
Решение
Так как теперь мы можем использовать еще один элемент DOM
в качестве содержимого нашей легенды / метки давайте немного изменим структуру DOM:
<div id="container">
<div id="demodiv"></div>
<div id="legend"></div>
</div>
<div id="container2">
<div id="demodiv2"></div>
<div id="legend2"></div>
</div>
Обратите внимание, что теперь у нас есть два разных контейнера для двух разных графиков Dygraph. Мы обернули их контейнером, чтобы применить стиль position: relative;
к контейнерам и поставить position: absolute;
на #legend
и #legend2
. Давайте посмотрим на CSS сейчас.
#container, #container2 {
position: relative;
}
#legend, #legend2 {
position: absolute;
top: 0; /* set accordingly */
left: 0; /* set accordingly */
display: inline-block;
width: 150px; /* set accordingly */
background-color: #fff; /* set accordingly */
}
Теперь ваш скрипт, мы собираемся предоставить опцию labelsDiv
и указать наши целевые элементы div:
var data = [ ... ] // your data here;
g = new Dygraph( document.getElementById("demodiv"), data.slice(50), {
customBars: true,
labels: ["date", "a", "b", "c"],
labelsDiv: document.getElementById('legend'),
});
g2 = new Dygraph( document.getElementById("demodiv2"), data, {
customBars: true,
labels: ["date", "a", "b", "c"],
labelsDiv: document.getElementById('legend2'),
});
Dygraph.synchronize([g, g2], {
selection: true,
zoom: true,
range: false
});
Отрывок
Я много пытался создать фрагмент, чтобы результат был виден здесь одним щелчком мыши, но с ошибкой. Итак, вот скриптовая ссылка