如何向下滚动到动态添加的ul中的最后一个li项目?

Raj*_*esh 7 javascript css jquery

我有一个ul定义的喜欢

 <div>
   <ul id="mylist">
   </ul>
 </div>
Run Code Online (Sandbox Code Playgroud)

在我的javascript中,我使用jquery将li项添加到此ul

$("mylist").append("<li>Test</li>");
Run Code Online (Sandbox Code Playgroud)

我希望我的ul自动向下滚动div,当我添加了很多li项目并且ul超过为它定义的高度时

我尝试过的事情:

  1. 在CSS中我设置了一个max-height和overflow-y:滚动ul
  2. 在Javascript中我做了$("mylist li").last().focus();

Emi*_*td. 16

点击这个JS小提琴.它会对你有所帮助.

jQuery的:

$('.add').click(function(){
   $("#mylist").append("<li>Test</li>");
   $('#mylist').animate({scrollTop: $('#mylist').prop("scrollHeight")}, 500);
});
Run Code Online (Sandbox Code Playgroud)

HTML:

<div>
  <ul id="mylist"></ul>
  <button class="add">Add li</button>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

#mylist {
    width: 100px;
    height: 200px;
    padding: 20px;
    background-color: #eeeeee;
    overflow-y: auto;
}
Run Code Online (Sandbox Code Playgroud)


Edu*_*scu 9

这也可以在不需要 JQuery 的 Vanilla JS 中完成:

items = document.querySelectorAll(".dummy");
    last = items[items.length-1];
    last.scrollIntoView();
Run Code Online (Sandbox Code Playgroud)

另见下面的片段:

items = document.querySelectorAll(".dummy");
    last = items[items.length-1];
    last.scrollIntoView();
Run Code Online (Sandbox Code Playgroud)
//this adds the new element at the bottom
button = document.querySelector("button")
button.onclick = function() {
list = document.querySelector("#mylist");
var li = document.createElement("li");
li.textContent = "Added with Vanilla JS"
list.appendChild(li);



//this jumps to the last element on the bottom
items = document.querySelectorAll(".dummy");
console.log(items);
last = items[items.length-1];
last.scrollIntoView();
}
Run Code Online (Sandbox Code Playgroud)
#mylist {
  max-height: 200px;
  overflow-y: auto;
}
.dummy {
  min-height: 80px;
  background-color: lightgrey;
}
Run Code Online (Sandbox Code Playgroud)


Aru*_*hny 3

尝试类似的东西

$('button').click(function() {
  var $last = $("<li>Test</li>").appendTo("#mylist");

  $("#mylist").stop().animate({
    scrollTop: $last.offset().top
  }, '500', 'swing', function() {});
})
Run Code Online (Sandbox Code Playgroud)
#mylist {
  max-height: 200px;
  overflow-y: auto;
}
.dummy {
  min-height: 80px;
  background-color: lightgrey;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button>Add</button>
<div>
  <ul id="mylist">
    <li class="dummy">Test</li>
    <li class="dummy">Test</li>
    <li class="dummy">Test</li>
    <li class="dummy">Test</li>
    <li class="dummy">Test</li>
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)