Javascript/jQuery在单个对象中转换DOM
我目前有:Javascript/jQuery在单个对象中转换DOM,javascript,jquery,html,Javascript,Jquery,Html,我目前有: <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> var items=document.getElementsByClassName('item') 变量项包含“对象HTMLCollection” 我想检查div是否在屏幕上可见,我知
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
var items=document.getElementsByClassName('item')代码>
变量项包含“对象HTMLCollection”
我想检查div是否在屏幕上可见,我知道如何做,但是我需要jquery/javascript中不同对象中的div,这样我可以在用户滚动时检查对象是否在屏幕上(我使用的是$(窗口)。滚动)
我该如何实现这一点?我想你想要的是:
$('.item').each(function(){
var element = $(this);//element contain the element selected for one iterate
//here your code to check one div is visible
});
您可以使用自定义的:inview
伪选择器来实现它:
循环遍历集合。for(var i=0;idiv.item
每次迭代}:visible
不选择当前在视口中但在整个文档对象中可见的元素。如果使用:if(element.css({“display”})=“none”)@Buisson将声明元素当前在视口/屏幕中。抱歉,我误解了术语“可见”
$.extend($.expr[':'], {
inview: function(el) {
var e = $(el),
w = $(window),
wt = w.scrollTop(),
wb = wt + w.height(),
et = e.offset().top,
eb = et + e.height();
return eb >= wt && et <= wb;
}
});
$(window).on('scroll', function(){
//do something with:
$('.item:inview') // .item elements in viewport
//or with:
$('.item:not(:inview)') // .item elements out of viewport
});