2015-10-30 2 views
-1

Таким образом, у меня есть функция, которая вызывается с помощью селектораобъект Jquery возвращает неопределенное значение

$(window).scroll(function() { 
    console.log($("#content div").inview()); 
}); 

Однако она возвращает неопределенное. Когда я возвращаю $ 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

Возможный дубликат [Возврат значения при использовании jQuery.each()?] (Http://stackoverflow.com/questions/3820269/return-a-value-when-using-jquery-each) – JJJ

+1

'return $ elems.each (...); 'from $ .fn.inview() –

ответ

2

inview не оператор возврата, поэтому она всегда возвращает undefined

Когда вы return $el; вы делаете это внутри анонимной функции вы передаете $elems.each

Если вы хотите что-то вернуть от inview, тогда вам понадобится оператор return в этой функции. Возможно, вы хотите создать массив непосредственно перед вызовом each, нажимайте $el на массив каждый раз, когда вы обходите цикл, а затем возвращаете массив.

Смежные вопросы