#javascript #jquery #d3.js
Вопрос:
У меня есть гистограмма с этими событиями:
mouseenter
иmouseleave
это я использую для вычисления общего времени, в течение которого курсор находился вSVG
mouseover
,mousemove
,mouseleave
для всплывающей подсказки, которая создается для каждого прямоугольника.
У меня есть 3 переключателя, которые я использую для отображения разных SVG
(поэтому change
я удаляю текущую SVG
и создаю новую). Теперь проблема в том, что я думаю, что между этими событиями есть противоречие. Иногда я не могу нажать на переключатель, но все остальное работает нормально. Почему событие щелчка предотвращается? У меня их несколько SVG
на моей странице, и я применяю одно и то же. Может ли быть в этом проблема? Ссылка на мой рабочий код: введите описание ссылки здесь
Я пробовал использовать d3.event.stopPropagation();
, но мне кажется, что я размещаю его в неправильном месте. Вот где я это помещаю:
let mouseover = function() {
tooltip.style("opacity", 1)
d3.event.stopPropagation();
}
let mousemove = function(d) {
tooltip
.html(d.key " speak " d.data[d.key] "%")
.style("left", (d3.mouse(this)[0] 70) "px")
.style("top", (d3.mouse(this)[1]) "px")
}
let mouseleave = function(d) {
tooltip.style("opacity", 0)
}
таким образом, проблема застревания кнопки щелчка возникает только в том случае, если я наведу курсор на прямоугольники, щелчок работает плавно, если я не наведу курсор.
Комментарии:
1. Вы уверены, что проблемы возникают из-за обработки событий? Для меня это больше похоже на проблему с загрузкой данных через
d3.csv()
, где время от времени появляется ошибка 500 внутренних серверов .2. Мое предположение, что проблема в обработчике событий, потому что, когда я прокомментировал движение мыши, возникла проблема( т. Е. Внутренняя ошибка 500 и проблема с обработкой событий).