Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使我的选择列表滚动到底部?_Javascript_Jquery_Knockout.js - Fatal编程技术网

Javascript 如何使我的选择列表滚动到底部?

Javascript 如何使我的选择列表滚动到底部?,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我创建了一个多选列表、输入文本框和一个添加按钮。用户可以通过“输入框”和“添加”按钮在“多选”列表中插入新选项。我还创建了一个小提琴示例: 我在示例中使用了knockout.js。选择列表是用“size=”5定义的“。当我在列表中获得超过5个条目后,如果不手动滚动到底部,我将无法看到任何新条目。”。我希望当用户在列表中输入任何新条目时,滚动条会自动移动到列表的底部。如何执行此操作?请考虑在其他选项之上添加新选项 自动滚动内容不是一个好的做法 使用 self.CourseOptions.unsh

我创建了一个多选列表、输入文本框和一个添加按钮。用户可以通过“输入框”和“添加”按钮在“多选”列表中插入新选项。我还创建了一个小提琴示例:


我在示例中使用了knockout.js。选择列表是用“size=”5定义的“。当我在列表中获得超过5个条目后,如果不手动滚动到底部,我将无法看到任何新条目。”。我希望当用户在列表中输入任何新条目时,滚动条会自动移动到列表的底部。如何执行此操作?

请考虑在其他选项之上添加新选项

自动滚动内容不是一个好的做法

使用

self.CourseOptions.unshift(self.optionAdd())

而不是

self.CourseOptions.push(self.optionAdd())

要在数组开始时插入项,请执行以下操作。

添加bindingHandler:

ko.bindingHandlers.scrollDown = {
update: function (elem, valueAccessor) {
    var shouldBeSelected = ko.utils.unwrapObservable(valueAccessor());
    if (shouldBeSelected) {
        //scroll
        $(elem).scrollTop(val);
        // back to previous state
        var boundProperty = valueAccessor();
        if (ko.isWriteableObservable(boundProperty))
            boundProperty(false);
    }
}};
将数据绑定添加到滚动元素:

  select data-bind="scrollDown: scrollDown ...
添加到MainModel:

self.scrollDown = ko.observable(false);
self.CourseOptions.subscribe(function(){
  setTimeout(function () { 
    self.scrollDown(true); 
  }, 0); 
});

示例:

您是否尝试过选择最后一个选定的项目?