(function($) { $.fn.simpleTooltip = function(options) { // Default settings var settings = $.extend({ color: '#000000', backgroundColor: '#FFFFFF', borderColor: '#CCCCCC', position: 'top' }, options); return this.each(function() { var $element = $(this); var tooltipText = $element.attr('data-tooltip'); // Create tooltip element var $tooltip = $('
' + tooltipText + '
'); // Apply styles to tooltip $tooltip.css({ 'position': 'absolute', 'display': 'none', 'padding': '5px 10px', 'border': '1px solid ' + settings.borderColor, 'border-radius': '4px', 'background-color': settings.backgroundColor, 'color': settings.color, 'font-size': '12px', 'z-index': 1000 }); // Add tooltip to body $('body').append($tooltip); // Show tooltip on hover $element.on('mouseenter', function() { var elementOffset = $element.offset(); var elementWidth = $element.outerWidth(); var elementHeight = $element.outerHeight(); var tooltipWidth = $tooltip.outerWidth(); var tooltipHeight = $tooltip.outerHeight(); var left, top; switch(settings.position) { case 'top': left = elementOffset.left + (elementWidth / 2) - (tooltipWidth / 2); top = elementOffset.top - tooltipHeight - 5; break; case 'bottom': left = elementOffset.left + (elementWidth / 2) - (tooltipWidth / 2); top = elementOffset.top + elementHeight + 5; break; case 'left': left = elementOffset.left - tooltipWidth - 5; top = elementOffset.top + (elementHeight / 2) - (tooltipHeight / 2); break; case 'right': left = elementOffset.left + elementWidth + 5; top = elementOffset.top + (elementHeight / 2) - (tooltipHeight / 2); break; } $tooltip.css({left: left, top: top}).fadeIn(200); }); // Hide tooltip on mouse leave $element.on('mouseleave', function() { $tooltip.fadeOut(200); }); }); }; }(jQuery));