Ich füge ein Kind Element zu einem Container mit fester Höhe und Überlauf: scroll. Ich möchte, dass sich die Innenseiten NICHT verschieben, selbst wenn das Element vor dem ersten Kind hinzugefügt wird (wie bei unendlichem Scrollen).Infinite Bildlauf: set scrollTop() so dass die Seite nicht verschiebt
Ich versuche, den ScrollTop zu setzen, aber es hat keine Wirkung.
$("#button").on("click", function(){
var height = $("#parent_insides").height();
var scroll_y = $("#parent_insides").offset().top;
$("#parent_insides").prepend($("#childpre"));
var new_height = $("#parent_insides").height();
var new_scroll_y = scroll_y - (new_height - height);
$("#parent_insides").scrollTop(new_scroll_y);
})
#parent{
height:200px;
overflow:scroll;
}
.child1{
height:300px;
background:red;
}
#childpre{
height:300px;
background:blue;
}
#button{
width:200px;
background:yellow;
height:40px;
line-height:40px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id = "parent">
<div id = "parent_insides">
<div class = "child1">
hello
</div>
</div>
</div>
<div id = "button"> Add element above
</div>
<div id = "childpre">
hello
</div>
Ich habe es richtig markiert, da dies scheint zu arbeiten, obwohl ich ehrlich gesagt nicht sicher bin warum! Offset und Scroll sind wahrscheinlich die am wenigsten intuitiven Dinge in Javascript. Übrigens muss ich vorgeben, weil meine Liste ein Kalender ist; Da ist immer etwas vorher. – user984003