[英]jQuery Datatables - Tooltipster not working on page 2
我在将Tooltipster与jQuery数据表一起使用时遇到问题。 工具提示仅在第一页上起作用,而在随后的页面上不起作用。
更新:我的js是
$('#tblCurrentEnrollments')
.on('order.dt', function () {
$('.demo-interact.tooltipstered').tooltipster('destroy');
setTimeout(SetToolTipster, 500);
})
.on('search.dt', function () {
$('.demo-interact.tooltipstered').tooltipster('destroy');
setTimeout(SetToolTipster, 500);
})
.on('page.dt', function () {
$('.demo-interact.tooltipstered').tooltipster('destroy');
setTimeout(SetToolTipster, 500);
})
.on('length.dt', function () {
$('.demo-interact.tooltipstered').tooltipster('destroy');
setTimeout(SetToolTipster, 500);
})
.dataTable({
"bAutoWidth": false, // Disable the auto width calculation
"lengthMenu": [[5, 10, 25, 50, -1], [5, 10, 25, 50, "All"]],
"aaData": currentEnrollments,
"aoColumns": [
{
"mData": getToolTip,
"sWidth": "30%"
},
{
"mDataProp": "_Class.class_title",
"sWidth": "30%"
},
{
"mDataProp": "EnrollmentResults.enrollment_results_title",
"sWidth": "20%"
},
{
"mDataProp": "ecommerce_time",
"sWidth": "20%"
}
]
});
function getToolTip(data, type, dataToSet) {
var link = "www.google.com";
var tipDesc = '';
tipDesc = data.Course.course_description;
tipDesc += "<p><a href='" + link + "' target= '_blank'>Click this link</a></p>";
tipDesc += "<p><img src='images/lion.jpg' /></p>"
return '<div class="demo-interact" title="' + tipDesc + '">' + data.Course.course_title + '</div>';
}
上面的代码正在工作。 我想知道这是否可以缩短或变得比目前更清洁。
谢谢。
尝试这个:
$("#tblCurrentEnrollments").DataTable({
"pageLength": 25,
"fnDrawCallback": function(){
// initialize tooltipster here
}
});
如果您使用带有Tooltipster的dataTable分页,并且在$.fn.tooltipster()
被调用时,您的工具提示在DOM中不可用,则其他dataTable“页面”上的后续未初始化工具提示将无法正常工作。
由于您尚未在此处包含Tooltipster的代码,因此我将作一些假设,但是一个想法是为每个$('.tooltip').tooltipster()
调用Tooltipster初始化函数,例如$('.tooltip').tooltipster()
类的东西$('.tooltip').tooltipster()
dataTable“页面”的下一次和上一次点击,而不仅仅是在$(document).ready()
(还有另一个假设)。
在这种情况下,您将需要使用一个名为fnCreatedCell
的DataTable参数。 这将允许您在mRender
使它可用之后修改DOM元素,原始DataTable配置的此修改后的段应该可以完成此工作:
"aoColumns": [{
"mDataProp": "Course.course_title",
"sWidth": "30%",
"mRender": function (data, type, full) {
// alert(currentEnrollments.length());
tipDesc = "Test"; //data.course_description;
tipDesc += "<p><a href='" + link + "' target= '_blank'>Click this link</a></p>";
tipDesc += "<p><img src='images/lion.jpg' /></p>"
return '<div class="demo-interact" title="' + tipDesc + '">' + data + '</div>';
}
},
"fnCreatedCell": function (nTd, sData, oData, iRow, iCol) {
$(".demo-interact", nTd).tooltipster({
// Your Tooltipster config. here
});
},
{
"mDataProp": "_Class.class_title",
"sWidth": "30%"
},
{
"mDataProp": "EnrollmentResults.enrollment_results_title",
"sWidth": "20%"
},
{
"mDataProp": "ecommerce_time",
"sWidth": "20%"
}
]
我希望这有帮助 :)
使用livequery :
$('.demo-interact').livequery(function () { $(this).tooltipster() })
即使某个元素是动态添加的,Livequery也会将其tooltipster
应用于具有demo-interact
类的所有元素。
我有同样的问题 。 发生这种情况是因为您没有在页面中另外传播事件监听器。 我解决了。
function myFunction(){
$('yourSelector').on('yourvent',function () {
});
$('yourSelector').off('yourvent',function () {
});
}
通过此示例,您将为其他页面绑定事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.