jquery scrollen wird nicht erkannt

Jan-Frederik Stieler

Monsterator
Moderator
Hallo,

ich versuch seit ner Stunde es hinzubekommen das sich ein Element bei einer bestimmten Scrollposition ändert. Irgendwie funktioniert das nicht.
Ich hab hier mal ein Beispiel erstellt:
http://jsbin.com/bubihi/edit?html,css,js,console,output
In die Konsole schreibe ich ob was passiert oder nicht.
In meinem Beispiel wird z.B. beim scrollen nicht erkannt das .container gescrollt wird, was ebenso nicht funktioniert ist das console.log('130'); ausgegeben wird.

Wahrscheinlich liegt das daran das ich ein Verständnisproblem bezgl. Wirkweise habe.

Grüße
 
Das liegt daran, dass sich einerseits .scrollTop() (ist eine Methode!) nur auf das Element bezieht, in dem es gescrollt wird (was bei Dir <body> ist), andererseits Du eben auch in diesem Element scrollst, was aber eben nicht das Element mit der Klasse "container" ist. Somit kann das, was Du vor hast, auch so nicht funktionieren.
 
Hi,
ich verstehe, .scrollTop() muss sich immer auf das zu scrollende Element beziehen.
Also dann habe ich jetzt grad eher ein Problem mit das richtige Element zu scrollen.
Bei mir wird ja anscheinend nur window gescrollt und nicht wie du sagst body.
Sonst müsste ja das hier funktionieren:

Javascript:
$(function(){
  console.log('Document is ready');
 
  $('body').on('scroll', function() {
    console.log('container is scrolling');
 
    if ($('body').scrollTop() > 130) {
      console.log('130');
    } else {
      console.log('andere position');
    }
   
  });
});

Bezüglich .scrollTop(), ich habe jetzt mehrfach im Netz gesehen das in if-abfragen das scrollTop ohne Klammer geschrieben wird. Was ist da jetzt richtig. Weil sobald ich die Klammern hinten dran mache wird gibt mir das Beispiel mit window auch die Konsolenausgabe aus?

Grüße
 
Also das erste kann ich Dir spontan auch nicht erklären. Was jedoch den zweiten Punkt betrifft, so kann ich nur sagen, dass Du mal ausprobieren kannst, was Dir $.fn.scrollTop in der Konsole ausgibt – eine Funktion. Ergo musst Du es als Funktion aufrufen.
 
Hi,
das war ja genau die Sache. In meinem ersten Beispiel habe ich ja auch Window und Body gegenübergestellt und eine meiner Fragen war ja warum das mit body nicht funktioniert.
Vor Allem da im Netz viele Beispiele auch mit body arbeiten und nicht mit window.

Grüße
 

Neue Beiträge

Zurück