I am using jQuery Tipsy plugin and I am wondering if it is possible to change the gravity dynamically.
I have been trying it without success: http://jsfiddle.net/YSYuu/
Here's the code anyway:
$('[data-demo]').tipsy({
title: 'data-demo',
gravity: 'n'
});
//changing it on real time
$('.demo').click(function () {
$('[data-demo]').tipsy({
title: 'data-demo',
gravity: 's'
});
alert("Gravity changed");
});
The problem is that tipsy binds event on a specific element for speed and within the plugin there is no unbind event. What you could do is to clone your element; and its probably the only way. (plugin limitations).
Here's the solution:
$('.text').tipsy({
title: 'data',
gravity: 's'
})
$(".demo").on("click", function(){
$(".text").remove().clone().appendTo("body").tipsy({
title: 'data',
gravity: 'n'
})
});
JSFiddle: http://jsfiddle.net/javascript/YSYuu/3/
Of course you would append to the exact same location where it was. To get its location you could use $(this).parent().children().index(this)
and then append $("#whatever li:eq(2)").after("...");