I have the following code which shows a tooltip containing dynamic data. Its working fine, But it shows same tooltip for all.
I have used tip._tippy.destroy(); bit didn't worked.
<div id="template" style="display: none;">
Loading a tooltip...
</div>
Element on which tooltip shows above:
<span class="more-tags otherPostTags" data-postId="{{$post->id}}">...</span>
Js:
const template = document.querySelector('#template')
const initialText = template.textContent
const tip = tippy('.otherPostTags', {
animation: 'shift-toward',
arrow: true,
html: '#template',
onShow() {
const content = this.querySelector('.tippy-content')
if (tip.loading || content.innerHTML !== initialText) return
tip.loading = true
node = document.querySelectorAll('[data-tippy]');
let id = node[0].dataset.postid;
$.ajax({
url: '/get/post/'+id+'/tags',
type: 'GET',
success: function(res){
let preparedMarkup = '';
res.tags.map(function(item) {
preparedMarkup +=
'<span class="orange-tag" style="background-color: '+item.color+'">'+
item.name +
'</span>';
});
content.innerHTML = preparedMarkup;
tip.loading = false
},
});
},
onHidden() {
const content = this.querySelector('.tippy-content');
content.innerHTML = initialText;
},
});
When i hover over, The tooptip shows with tags coming from the database, But it shows same tags/data on hover, The data comes different but it shows tooltip which comes on first hover.
this is because keyword const creates a read-only variable.
you have to change it to
varorlet, because it needs to bemutable(whichconstisn't).theory aside, you have to change
const tiptovar tip- in order to update and/or destroy it.according to the following markup - which is still a little narrow, because it is not the rendered HTML output of one whole post's markup, as it would be required to reproduce the issue in a reliable manner:
one could (probably, within the scope of the event source) obtain the id alike:
the most common method to handle ids would be to use attribute
id(eg. with a post_id alikepost_45) of the whole post's node in combination withthe bottom line is, that without the complete markup of a single post, I can only hint for syntax alike
$(this).parent().parent()..., which may be required in order to get a handle, which would need to be selected relative to the event source.