vendor/assets/javascripts/foundation/jquery.foundation.tooltips.js in zurb-foundation-3.1.1 vs vendor/assets/javascripts/foundation/jquery.foundation.tooltips.js in zurb-foundation-3.2.0.rc1

- old
+ new

@@ -11,35 +11,38 @@ ;(function ($, window, undefined) { 'use strict'; var settings = { bodyHeight : 0, - targetClass : '.has-tip', + selector : '.has-tip', tooltipClass : '.tooltip', tipTemplate : function (selector, content) { return '<span data-selector="' + selector + '" class="' + settings.tooltipClass.substring(1) + '">' + content + '<span class="nub"></span></span>'; } }, methods = { init : function (options) { settings = $.extend(settings, options); + // alias the old targetClass option + settings.selector = settings.targetClass ? settings.targetClass : settings.selector; + return this.each(function () { var $body = $('body'); if (Modernizr.touch) { - $body.on('click.tooltip touchstart.tooltip touchend.tooltip', settings.targetClass, function (e) { + $body.on('click.tooltip touchstart.tooltip touchend.tooltip', settings.selector, function (e) { e.preventDefault(); $(settings.tooltipClass).hide(); methods.showOrCreateTip($(this)); }); $body.on('click.tooltip touchstart.tooltip touchend.tooltip', settings.tooltipClass, function (e) { e.preventDefault(); $(this).fadeOut(150); }); } else { - $body.on('mouseenter.tooltip mouseleave.tooltip', settings.targetClass, function (e) { + $body.on('mouseenter.tooltip mouseleave.tooltip', settings.selector, function (e) { var $this = $(this); if (e.type === 'mouseenter') { methods.showOrCreateTip($this); } else if (e.type === 'mouseleave') { @@ -79,11 +82,11 @@ $target.attr('data-selector', dataSelector); } return (id) ? id : dataSelector; }, create : function ($target) { - var $tip = $(settings.tipTemplate(methods.selector($target), $('<div>').text($target.attr('title')).html())), + var $tip = $(settings.tipTemplate(methods.selector($target), $('<div>').html($target.attr('title')).html())), classes = methods.inheritable_classes($target); $tip.addClass(classes).appendTo('body'); if (Modernizr.touch) { $tip.append('<span class="tap-to-close">tap to close </span>'); @@ -122,33 +125,34 @@ column = $('body'); } tip.width(column.outerWidth() - 25).css('left', 15).addClass('tip-override'); objPos(nub, -nubHeight, 'auto', 'auto', target.offset().left); } else { - if (classes.indexOf('tip-top') > -1) { + if (classes && classes.indexOf('tip-top') > -1) { objPos(tip, (target.offset().top - tip.outerHeight() - nubHeight), 'auto', 'auto', target.offset().left, width) .removeClass('tip-override'); objPos(nub, 'auto', 'auto', -nubHeight, 'auto'); - } else if (classes.indexOf('tip-left') > -1) { + } else if (classes && classes.indexOf('tip-left') > -1) { objPos(tip, (target.offset().top + (target.outerHeight() / 2) - nubHeight), 'auto', 'auto', (target.offset().left - tip.outerWidth() - 10), width) .removeClass('tip-override'); objPos(nub, (tip.outerHeight() / 2) - (nubHeight / 2), -nubHeight, 'auto', 'auto'); - } else if (classes.indexOf('tip-right') > -1) { + } else if (classes && classes.indexOf('tip-right') > -1) { objPos(tip, (target.offset().top + (target.outerHeight() / 2) - nubHeight), 'auto', 'auto', (target.offset().left + target.outerWidth() + 10), width) .removeClass('tip-override'); objPos(nub, (tip.outerHeight() / 2) - (nubHeight / 2), 'auto', 'auto', -nubHeight); } } tip.css('visibility', 'visible').hide(); }, inheritable_classes : function (target) { var inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'noradius'], - filtered = $.map(target.attr('class').split(' '), function (el, i) { - if ($.inArray(el, inheritables) !== -1) { - return el; - } - }).join(' '); + classes = target.attr('class'), + filtered = classes ? $.map(classes.split(' '), function (el, i) { + if ($.inArray(el, inheritables) !== -1) { + return el; + } + }).join(' ') : ''; return $.trim(filtered); }, show : function ($target) { var $tip = methods.getTip($target); @@ -167,12 +171,12 @@ return ($self.data('tooltips')) ? $self.foundationTooltips('destroy').foundationTooltips('init') : $self.foundationTooltips('init'); }, destroy : function () { return this.each(function () { $(window).off('.tooltip'); - $(settings.targetClass).off('.tooltip'); + $(settings.selector).off('.tooltip'); $(settings.tooltipClass).each(function (i) { - $($(settings.targetClass).get(i)).attr('title', $(this).text()); + $($(settings.selector).get(i)).attr('title', $(this).text()); }).remove(); }); } };