Here's my HTML:
<a href="#" title="Tooltip on top" data-position="top">Rem provident</a> alias molestiae.
Here's my jQuery:
$.fn.tooltip = function(userOptions)
{
var defaultOptions = {
position: '',
follow: true
};
options = $.extend(defaultOptions, userOptions);
element = $(this);
title = element.attr('title');
element.on("mouseenter", element, _mouseEnter);
}
function build(title)
{
var markup = '<div class="tooltip ' + options.position + '">';
markup += '<div class="tooltip-content">';
markup += '<p>' + title + '</p>';
markup += '<span class="tooltip-arrow"></span>';
markup += '</div>';
markup += '</div>';
$('body').append(markup);
var top, left;
//
tooltip = $('.tooltip');
alert(options.position);
if (options.position == "" || options.position == undefined || options.follow == true)
{
element.on("mousemove", element, _mouseMove);
}
else
{
if (tooltip.hasClass('top'))
{
top = $(this).offset().top - ($(this).height() * 2) - 10;
left = $(this).offset().left;
}
else if (tooltip.hasClass('right'))
{
top = $(this).offset().top - ($(this).height() / 2);
left = $(this).offset().left + toolTip.width();
}
else if (tooltip.hasClass('bottom'))
{
top = $(this).offset().top + $(this).height() + 10;
left = $(this).offset().left;
}
else if (tooltip.hasClass('left'))
{
top = $(this).offset().top - ($(this).height() / 2);
left = $(this).offset().left - (toolTip.width() * 1.5);
}
tooltip.css('top', top).css('left', left).show();
}
}
function _mouseEnter()
{
$(this).attr('title', '');
build(title);
}
function _mouseMove(e)
{
tooltip.text(title);
var position = $(this).data('position');
var top = e.pageY + 75;
var left = e.pageX + 10;
tooltip.css('top', top).css('left', left).show();
}
function _mouseOut()
{
$(this).attr('title', title);
$(this).hide();
}
What happening is that position is always empty, therefore the mousemove function is being activated every single time. I'm getting the position from the data attribute so I'm not sure why it's empty. Any ideas?

New Topic/Question
Reply



MultiQuote


|