我正在尝试检查div
来viewport
或not
,但我收到此错误:
无法读取
的属性left
undefined
在scroll
事件中,我正在检查视口中存在哪个div,如下所示:
( "#container" ).scroll(function() {
console.log('scrlling');
$.each( $('#container>div'), function(i, left) {
console.log(i);
var msid= $(left).attr('data-msid');
console.log($(left).attr('data-msid'));
console.log($(left['data-msid='+msid]).isOnScreen())
})
});
答案 0 :(得分:2)
问题在于这句话:
console.log($(left['data-msid='+msid]).isOnScreen())
而不是过滤$(left)
以确保其data-msid
为msid
,而是在left
上运行动态属性访问(由于方括号表示法) 。由于left
是DOM节点,因此它没有以data-msid=
开头的任何属性,因此属性访问返回undefined
。因此,您的代码运行如下:
console.log($(undefined).isOnScreen())
我猜测isOnScreen()
会在某个时刻检查left
属性,因为传递给jQuery的唯一内容是undefined
,所以不难想象会抛出错误最终在这里。
$("#container").scroll(function() {
console.log('scrolling');
$('#container > div').each(function (i, left) {
console.log(i);
var msid = $(left).attr('data-msid');
console.log(msid);
console.log($(left).isOnScreen());
})
});