2013-05-08 83 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); 
});