I am using jQuery tooltip for dynamic created row(can be 10 row/more row)
Tooltip is being display properly but close is not being properly.
Error is given below,
Error: cannot call methods on tooltip prior to initialization; attempted to call method 'close'
throw new Error( msg );
while(m < 10){
.......................................
.......................................
if(data =="EXIST")
{
display_tp_tooltip(m);
$("#tp_no"+m).val("");
}
else
{
display_tp_tooltip_close(m);
}
}
function display_tp_tooltip(m)
{
$("#tp_no"+m).tooltip();
$("#tp_no"+m).tooltip({
open: function (e, o) {
o.tooltip.animate({ top: o.tooltip.position().top + 10 }, "fast" );
$(o.tooltip).mouseover(function (e) {
$("#tp_no"+m).tooltip('close');
});
$(o.tooltip).mouseout(function (e) {});
},
position: {
my: "center bottom-20",
at: "center top",
using: function( position, feedback ) {
$( this ).css( position );
$( "<div>" )
.addClass( "arrow" )
.addClass( feedback.vertical )
.addClass( feedback.horizontal )
.append($('<style>.ui-tooltip,.arrow:after { background:red; }</style>'))
.appendTo( this );
}
},
content: function() { return cellTpNoTooltipContent()},
close: function (e, o) {},
show: {
duration: 800
}
});
$("#tp_no"+m).tooltip('open');
setTimeout(function () {
$(this).tooltip('close'); //close the tooltip
}, 3000);
}
function cellTpNoTooltipContent()
{
var rval = "T.P No. is exist";
return rval;
}
function display_tp_tooltip_close(m)
{
$("#tp_no"+m).tooltip("close");
}
How can i solve it? Please help me.
I found that declaring bootstrap.js before jquery-ui.js in my caused the problem. Make sure that jquery-ui.js is declared before bootstrap.js.
You'll need to prevent the jQuery UI library from overwriting jQuery.fn.tooltip
.
So cache this value before loading the jQuery UI library, then restore it afterward:
<script>
let _tooltip = jQuery.fn.tooltip; // <--- Cache this
</script>
<script src="/path/to/jquery-ui.min.js"></script> <!-- load jQuery UI -->
<script>
jQuery.fn.tooltip = _tooltip; // <--- Then restore it here
</script>
Declare jquery-ui.js before the bootstrap.js
You can't call a method from the tooltip widget (e.g .tooltip('close')
) before the widget has been initialized, either with a call to .tooltip()
or .tooltip({ })
You can prevent this error by testing that the DOM element is an instance of the tooltip widget:
if($("#tp_no"+m).is(':ui-tooltip')){
$("#tp_no"+m).tooltip("close");
}
Another option would be to move the call to $("#tp_no"+m).tooltip();
as the first thing inside your while(m < 10)
loop to ensure that whichever branch your if statement takes, the element will be an instance of the tooltip widget
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With