提问人:lky 提问时间:4/17/2019 最后编辑:marc_slky 更新时间:2/24/2023 访问量:7227
Tippy.js 不显示数据属性中的内容?
Tippy.js not displaying content from the data attribute?
问:
我已经安装了 tippy.js 来处理我的工具提示,但是我正在努力获取工具提示来显示数据属性中的内容集。我的默认工具提示工作正常,但是当我通过类初始化时,为了能够向工具提示添加不同的样式,它不会从工具提示中获取内容。
tippy.setDefaults({
animation: 'scale',
animateFill: false,
maxWidth: 240,
duration: 0,
arrow: false,
})
tippy('.js-tippy-reviews', {
theme: 'reviews',
animation: 'scale',
animateFill: false,
maxWidth: 240,
duration: 0,
arrow: false,
})
如果我将 content 方法添加到 tippy,它将显示,但是由于工具提示的内容是动态的,我需要在 data 属性上设置它。我不确定如何将数据属性从元素传递到 tippy。
content: this.dataset.tippy
知道我做错了什么吗?
HTML格式:
<div class="js-tippy-reviews reviews-notification" data-tippy="2 Pending Reviews"></div>
答:
8赞
Recep Karadas
4/17/2019
#1
您可以添加 onShow() 函数并从实例中读取它,并从参考数据集中设置内容。
tippy.setDefaults({
animation: 'scale',
animateFill: false,
maxWidth: 240,
duration: 0,
arrow: false,
});
tippy('.js-tippy-reviews', {
theme: 'reviews',
animation: 'scale',
animateFill: false,
maxWidth: 240,
duration: 0,
arrow: false,
onShow(instance) {
instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
instance.setContent(instance.reference.dataset.tippy);
}
});
$(document).ready(function(){
$("#btn-change-data").click(function()
{
$(".js-tippy-reviews").attr("data-tippy",$("#test-input").val());
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://unpkg.com/popper.js@1"></script>
<script src="https://unpkg.com/tippy.js@4"></script>
<div class="js-tippy-reviews reviews-notification" data-tippy="test">CONTENT</div>
<input type="text" id="test-input" />
<button id="btn-change-data">Change data-tippy</button>
评论
0赞
lky
4/17/2019
谢谢@Recep卡拉达斯:)
0赞
lky
4/17/2019
我刚刚注意到,使用上面的代码,如果数据属性不存在,它仍然会显示工具提示,但它将是空的。如果没有数据属性,我们是否可以阻止工具提示显示在元素上?猜猜我们可以删除类吗?
0赞
Recep Karadas
4/17/2019
由于您拥有该实例,并且幸运的是它们提供了隐藏属性,因此我们可以使用该属性。刚刚添加了一个文本框和按钮,用于动态更改数据属性以进行测试:)
1赞
Alexgl
2/24/2023
#2
此解决方案有效
tippy('.js-tippy-reviews', {
content: (reference) => reference.dataset.tippy,
})
评论