@@ -29,8 +29,11 @@ function setupTooltip(el, doctoolname, doctoolversion, selector) {
29
29
const anchorElement = el ;
30
30
let relatedTooltip ;
31
31
32
- el . addEventListener ( "mouseenter" , delayShowTooltip ) ;
33
- el . addEventListener ( "mouseleave" , delayHideTooltip ) ;
32
+ if ( ! el . hasEventListener ) {
33
+ el . addEventListener ( "mouseenter" , delayShowTooltip ) ;
34
+ el . addEventListener ( "mouseleave" , delayHideTooltip ) ;
35
+ el . hasEventListener = true ;
36
+ }
34
37
35
38
let showTooltipTimeoutId = null ;
36
39
let hideTooltipTimeoutId = null ;
@@ -153,7 +156,8 @@ function setupTooltip(el, doctoolname, doctoolversion, selector) {
153
156
return relatedTooltip ;
154
157
}
155
158
156
- const existingTooltip = anchorElement . parentElement . querySelector (
159
+ // Check if there is already a tooltip for this url
160
+ const existingTooltip = document . querySelector (
157
161
`div[${ TOOLTIP_DATA_HREF } ="${ anchorElement . href } "]` ,
158
162
) ;
159
163
if ( existingTooltip ) {
@@ -171,8 +175,11 @@ function setupTooltip(el, doctoolname, doctoolversion, selector) {
171
175
anchorElement . insertAdjacentElement ( "afterend" , newTooltip ) ;
172
176
// Let's add event listeners on the tooltip as well, to prevent hiding, when
173
177
// mouse moves away from the anchor element
174
- newTooltip . addEventListener ( "mouseenter" , cancelHideDelay ) ;
175
- newTooltip . addEventListener ( "mouseleave" , delayHideTooltip ) ;
178
+ if ( ! newTooltip . hasEventListener ) {
179
+ newTooltip . addEventListener ( "mouseenter" , cancelHideDelay ) ;
180
+ newTooltip . addEventListener ( "mouseleave" , delayHideTooltip ) ;
181
+ newTooltip . hasEventListener = true ;
182
+ }
176
183
relatedTooltip = newTooltip ;
177
184
return newTooltip ;
178
185
}
0 commit comments