我有一个里面有很多李的div。
<div>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
...
</div>
通常当用户在窗口内滚动时,一些<li>
进入溢出并将被隐藏。我知道我可以通过这个jQuery插件检查一个元素是否在屏幕的视口中:http://www.appelsiini.net/projects/viewport
我只需要这个功能,但不是整个屏幕,而只是一个div。因此,当元素不可见时,我可以更新一些文本。
需要一些帮助,提前致谢!
答案 0 :(得分:6)
This是一个非常好的答案,但这是您提到的Viewport插件的修改版本。
(function($) {
$.belowthefold = function(lookIn, elements, settings) {
var fold = $(lookIn).height() + $(lookIn).scrollTop();
return $(elements).filter(function(){
return fold <= $(this).offset().top - settings.threshold;
});
};
$.abovethetop = function(lookIn, elements, settings) {
var top = $(lookIn).scrollTop();
return $(elements).filter(function(){
return top >= $(this).offset().top + $(this).height() - settings.threshold;
});
};
$.rightofscreen = function(lookIn, elements, settings) {
var fold = $(lookIn).width() + $(lookIn).scrollLeft();
return $(elements).filter(function(){
return fold <= $(this).offset().left - settings.threshold;
});
};
$.leftofscreen = function(lookIn, elements, settings) {
var left = $(lookIn).scrollLeft();
return $(elements).filter(function(){
return left >= $(this).offset().left + $(this).width() - settings.threshold;
});
};
})(jQuery);
使用这样的HTML:
<div id="lookInMe">
<div class="peek"></div>
<div class="peek"></div>
[ ... ]
</div>
这样称呼:
$.belowthefold("#lookInMe", ".peek", {threshold : 0}).text("Below");
$.abovethetop("#lookInMe", ".peek", {threshold : 0}).text("Above");
$.leftofscreen("#lookInMe", ".peek", {threshold : 0}).text("Left");
$.rightofscreen("#lookInMe", ".peek", {threshold : 0}).text("Right");