所以,我有一个通过选择器调用的函数
$(window).scroll(function() {
console.log($("#content div").inview());
});
然而它返回undefined。当我返回$ elems时,它会向我显示所有正确的元素,但是当我返回$ el时它会给出undefined。
$.fn.inview = function() {
var $elems = this;
function getViewportHeight() {
/*do tsoomething that works*/
return height;
}
var vpH = getViewportHeight(),
scrolltop = (document.documentElement.scrollTop ?
document.documentElement.scrollTop :
document.body.scrollTop);
// return $elems.toArray();
$elems.each(function () {
var $el = $(this)
height = $el.height() - (vpH / 1.5),
inview = $el.data('inview') || false,
topofscreen = scrolltop,
botofscreen = topofscreen + vpH,
topofelement= $el.offset().top;
return $el;
};
答案 0 :(得分:2)
inview
没有返回语句,因此始终返回undefined
当您return $el;
在匿名函数中执行此操作时,您会转到$elems.each
如果你想从inview
返回一些内容,那么你需要在该函数中使用return语句。您可能希望在调用each
之前创建一个数组,每次绕过循环时将$el
推送到数组上,然后返回数组。