• kmurrayfrgraphics

    (@kmurrayfrgraphics)


    A few weeks ago I added this javascript to my website. What it does is makes my <abbr> tag responsive and work on mobile devices by ‘clicking’ on them.

    My site

    The script is called:

    tooltips.js

    The code reads like this:

    jQuery( document ).ready( function($)
        {
        var targets = $( '[rel~=tooltip]' ),
            target  = false,
            tooltip = false,
            title   = false;
    
        targets.bind( 'mouseenter', function()
        {
            target  = $( this );
            tip     = target.attr( 'title' );
            tooltip = $( '<div id="tooltip"></div>' );
    
            if( !tip || tip == '' )
                return false;
    
            target.removeAttr( 'title' );
            tooltip.css( 'opacity', 0 )
                   .html( tip )
                   .appendTo( 'body' );
    
            var init_tooltip = function()
            {
                if( $( window ).width() < tooltip.outerWidth() * 1.5 )
                    tooltip.css( 'max-width', $( window ).width() / 2 );
                else
                    tooltip.css( 'max-width', 340 );
    
                var pos_left = target.offset().left + ( target.outerWidth() / 2 ) - ( tooltip.outerWidth() / 2 ),
                    pos_top  = target.offset().top - tooltip.outerHeight() - 20;
    
                if( pos_left < 0 )
                {
                    pos_left = target.offset().left + target.outerWidth() / 2 - 20;
                    tooltip.addClass( 'left' );
                }
                else
                    tooltip.removeClass( 'left' );
    
                if( pos_left + tooltip.outerWidth() > $( window ).width() )
                {
                    pos_left = target.offset().left - tooltip.outerWidth() + target.outerWidth() / 2 + 20;
                    tooltip.addClass( 'right' );
                }
                else
                    tooltip.removeClass( 'right' );
    
                if( pos_top < 0 )
                {
                    var pos_top  = target.offset().top + target.outerHeight();
                    tooltip.addClass( 'top' );
                }
                else
                    tooltip.removeClass( 'top' );
    
                tooltip.css( { left: pos_left, top: pos_top } )
                       .animate( { top: '+=10', opacity: 1 }, 50 );
            };
    
            init_tooltip();
            $( window ).resize( init_tooltip );
    
            var remove_tooltip = function()
            {
                tooltip.animate( { top: '-=10', opacity: 0 }, 50, function()
                {
                    $( this ).remove();
                });
    
                target.attr( 'title', tip );
            };
    
            target.bind( 'mouseleave', remove_tooltip );
            tooltip.bind( 'click', remove_tooltip );
        });
        });

    I created a function.php for the child theme that has the code only called to on this specific page:

    <?php
        if ( !function_exists( 'tool_tips' ) ) {
        function tooltips() {
        if ( is_page( 'services' ) ) {
        wp_enqueue_script( 'tooltips', get_stylesheet_directory_uri() . '/js/tooltips.js', '', '1.0', true );
        }
        }
        }
        add_action( 'wp_enqueue_scripts', 'tooltips' );
    
        ?>

    Like I stated earlier, it has been functioning the past few weeks with no issues (I even checked it over this past weekend) and today I noticed it stopped working.

    I am very new to Javascript and not sure how to troubleshoot this problem.

    Is there a way to see if other scripts could be interfering?

    Thank you very much.

  • The topic ‘Responsive Javascript not running correctly on my site.’ is closed to new replies.