getBoundingClientRect im einzelnen: undefined keine Funktion
So, ich bin versucht zu rufen, einige Funktionen aus, wenn Sie Vollbild-Abschnitte sind in den viewport. Sagen wir mal ich habe 7 Abschnitte, dann möchte ich, dass etwas passiert, wenn ein bestimmter Abschnitt innerhalb des Viewports (ich habe eine Funktion, die Schnappschüsse, die Abschnitte in den viewport, so kann es niemals mehrere Abschnitte im Ansichtsfenster, aber ich versuche herauszufinden, welcher Bereich sichtbar ist, in den viewport).
Hier ist ein Turnschuh: http://jsfiddle.net/h7Hb7/2/
function isInViewport() {
$("section").each(function () {
var $this = $(this),
wHeight = $(window).height(),
rect = $this.getBoundingClientRect(); //Error in console
//Borrowed from http://stackoverflow.com/a/7557433/5628
if (rect.top >= 0 && rect.bottom <= wHeight) {
console.log($this.attr("id") + "in viewport");
}
});
}
$(window).scroll(function () {
//Other functions are called inside the setTimeout function, can't remove
clearTimeout($.data(this, "scrollTimer"));
$.data(this, "scrollTimer", setTimeout(function () {
isInViewport();
}, 1200));
});
Ich weiß nicht, wo zu beginnen, aber ich bin zu raten, es zu tun, mit der jede Funktion. Ist es die jede Funktion, die ein problem darstellt? Es kann nicht ein CSS-Problem, denn das problem tritt auf Blättern, wenn die CSS hat bereits geladen ist.
InformationsquelleAutor Bram Vanroy | 2014-08-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
jQuery-Objekt nicht
getBoundingClientRect
Methode, sollte man das HTMLElement Objekt und rufen Sie dann die Methode oder:Als Anregung, wenn Sie mit einem plugin ist eine option, die Sie betrachten können, mit der
jquery.inview
plugin.Nehme ich zurück, scheinbar es scheint, wie es kann eine Menge tun! Ich mag besonders, wie Sie können trennen und verwenden Sie es in Kombination mit
one()
. Danke für den Tipp!Sie sind sehr herzlich willkommen!
this.getBoundingClientRect()
funktioniert nicht innerhalb einer für die mit einfachen Javascript.Nichts verhindert, dass die
getBoundingClientRect
Methode aus der Arbeit in einemfor
Schleife.InformationsquelleAutor undefined
Könnten Sie stick mit jQuery und nutzen Sie die array - [] - notation ie:
Object[0]
für mich funktioniert. Danke!Wow... das funktioniert! Wissen Sie, warum?
Da das erste Element aus dem Objekt wird das HtmlElement.
InformationsquelleAutor mustbebuilt