0

I'm trying to set up a function that stops working when the user scrolls, is there an oposite to the function below?

 $(window).scroll(function() {
     //while user is not scrolling do this
 });

Here's the function I want to stop working when the user scrolls as I have multiple instances of this using data rows, the problem I'm having is when one tooltip starts loading and the user scrolls over several more by accident or chance, the page jumps to the last one to load.

This function is in an on page load:

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', 500 );

        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( {opacity: 1 }, 50 );
    };

    init_tooltip();
    $( window ).resize( init_tooltip );

    var remove_tooltip = function()
    {
        tooltip.animate( { opacity: 0 }, 50, function()
        {
            $( this ).remove();
        });

        target.attr( 'title', tip );
    };

    target.bind( 'mouseleave', remove_tooltip );
    tooltip.bind( 'click', remove_tooltip );
});

$('.propAvailable').hover(function(){

    if ($(this).attr("title") == "") {
        $(this).siblings("a.TypesOfProperties").click();
    }
});
huddds
  • 1,045
  • 6
  • 27
  • 47

1 Answers1

1
targets.on( 'mouseenter', doStuff);

function doStuff() {
    target  = $( this );
    tip     = target.attr( 'title' );
    tooltip = $( '<div id="tooltip"></div>' );
    ......etc
}

var timer;

$(window).on('scroll', function() {
    clearTimeout(timer);
    targets.off( 'mouseenter', doStuff);
    timer = setTimeout(function() {
        targets.on( 'mouseenter', doStuff);
    },300);
});
adeneo
  • 312,895
  • 29
  • 395
  • 388