2013-05-08 33 views
0

我试图设置一个函数,当用户滚动时停止工作,是否存在下面函数的反例?在jQuery中是否存在NOT(window).scroll函数?

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

这是我要停止工作,当用户滚动因为我有这样的使用数据行的多个实例的功能,我遇到的问题是,当一个提示开始加载在几个用户滚动更受事故或机会,页面跳转到最后一个加载。

该功能是在一个在页加载:

变种目标= $( '[相对〜=提示]'), 目标=假, 工具提示=假, 标题= 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(); 
    } 
}); 
+2

使用的setTimeout来检测滚动事件的延迟。当延迟大于x时,假定滚动已停止。 – 2013-05-08 16:28:37

+0

向我们展示您试图阻止的功能? – adeneo 2013-05-08 16:29:26

+0

这可能会有所帮助:http://stackoverflow.com/questions/8931605/fire-event-after-scrollling-scrollbars-or-mousewheel-javascript – ZimSystem 2013-05-08 16:41:12

回答

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); 
}); 
相关问题