2013-09-23 47 views
0

我有一个相对定位的流体股利。在这个div里面我有一个时间线,它由多个标签组成,表示时间。当滚动条出现时,我需要刷新时间轴的位置。但我能想到的唯一事件是:捕捉显示滚动条事件

$(window).resize(function(event) { 
    ... 
}); 

并且它不会触发。它只有在我按下时才会触发,例如,Chrome中的f12才能打开开发工具。但如果我以自然的方式获得滚动条(因为很多内容),我无法弄清楚如何捕捉这个事件

+0

这个我quess的重复:http://stackoverflow.com/questions/2578046/scrollbar-appear-disappear-event-in-jquery – BobClaerhout

+1

这是因为.resize()只触发时整个可见窗口将被调整大小,例如,当显示Chrome的开发人员工具时。做到这一点的正确方法是在您填充div时运行检查。 – HodofHod

+0

那么,我不填充div。但是如果滚动条出现,div的大小会发生变化 – Victor

回答

1

我做了一个jsfiddle,显示了当垂直方向的宽度和随机div的变化滚动条出现。这可以帮助你解决你的问题。

http://jsfiddle.net/kasperfish/GrZp4/3/

$(function() { 
    getinfo(); 
    $('#togglescroll').click(function(){ 
     $('#container').slideToggle("fast" , function(){ 
      getinfo(); 
     }); 

    }); 
}); 



function getinfo(){ 
    $('#view').html('body width: '+$("body").width()+'</br>'); 
    $('#view').append('red rectangle width: '+$("#view").width()+' (2px < body because of border 1px)</br>'); 
    if ($("body").height()>$(window).height()) { 
     $('#view').append('vertical scrollbar: yes');   
    }else{ 
     $('#view').append('vertical scrollbar: no'); 
    } 

} 
+0

其实我解决了我的问题以另一种方式。我忘记了我的窗口调整大小事件(我有一个内部条件),并认为事件不会触发。那么,我刷新我在window.resize上绝对定位的div并且不关心滚动条。但无论如何感谢您的帖子,很高兴知道 – Victor