我有以下提示,在悬停时 Ajax 调用会去并获取数据,创建内容并显示它。但它不适用于动态内容,因为在页面加载时
<span class="more-tags otherPostTags" data-postId="{{$post->id}}">...</span>
在页面上是静态的,但在选项卡中也是动态的。
所以下面的代码适用于静态
<span class="more-tags otherPostTags" data-postId="{{$post->id}}">...</span>
但不适用于动态。
<div id="template" style="display: none;">
Loading a new image...
</div>
<span class="more-tags otherPostTags" data-postId="{{$post->id}}">...</span>
提示 jquery :
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
},
error: function(error) {
console.log(error);
content.innerHTML = 'Loading failed';
tip.loading = false
},
});
},
onHidden() {
const content = this.querySelector('.tippy-content');
content.innerHTML = initialText;
},
popperOptions: {
modifiers: {
preventOverflow: {
enabled: false
},
hide: {
enabled: false
}
}
}
});
我在这里想念什么?