..由于没有悬停,工具提示显示在
TAPhref
并在临时创建的元素上显示在工具提示内的the绕而解决此问题。 没有问题的工作。 现在js点击事件呢?
I在网站上没有JS AddEventListener制造的元素。有时在JS中激活工具刀片之前,有时甚至在Ajax之后都可以进行此操作。更多的Genreal问题 这不一定是特定于工具的。我可以做那部分。问题是,如何首先转移eventlisteners?
下面有代码,但不一定相关:
href
nor
tooltipster当初始化工具提示时,我们可以在父元素上进行点击事件。这样可以确保我们的处理程序优先于其他人,甚至其他捕获的处理程序。然后通过编程触发该事件,呼叫
Stopimmediatiatepropagationnitions。<a>
类来做到这一点:
href
isTouch = ('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0)
$('.tooltip' + (isTouch?':not(.ajx)':''))
.tooltipster({
debug:true,
animation: 'grow',
interactive:true,
repositionOnScroll:true,
contentAsHTML : true,
//trackOrigin:true, //performance!
delay: 200,
trigger: 'custom',
triggerOpen: {
click: true,
mouseenter: true,
tap: true
},
triggerClose: {
mouseleave: true,
click: true,
tap: true
}
})
/***** Don't open tooltips of parents ****/
//click (parent events comes after child)
.has('.tooltip')
.tooltipster('option' , 'functionBefore' , (inst, helper) => { //console.log('functionBefore', helper)
if (helper.event && !helper.event.target?.isEqualNode(helper.origin))
return false;//console.log(helper.event)//.stop()
})
//hover (child events comes after parent)
.children('.tooltip')
.tooltipster('option' , 'functionBefore' , (inst, helper) => { //console.log('functionBefore', helper)
$(helper.origin).parents('.tooltip').tooltipster('close')
})
.tooltipster('option' , 'functionAfter' , (inst, helper) => { //console.log('functionAfter', helper)
//If hover out on or via parent
if (helper.event.relatedTarget?.classList.contains('tooltip'))
$(helper.event.relatedTarget).tooltipster('open')
})
stop-propagation
$.tooltipster.on('init', (event) => {
event.origin.parentElement.addEventListener('click', (e) => {
if (e.target.classList.contains('stop-propagation')) {
e.stopImmediatePropagation();
e.preventDefault();
$(e.target).tooltipster('open');
}
}, true) // <-- use capture
});