javascript - 如何让我的选择列表滚动到底部?

标签 javascript jquery knockout.js

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

http://jsbin.com/exuwis/7/edit

我在示例中使用了 knockout.js。选择列表定义为“size="5”。在列表中获得超过 5 个条目后,如果不手动滚动到底部。我希望当用户在列表中输入任何新条目时,滚动条会自动移动到列表底部。我该怎么做?

最佳答案

添加绑定(bind)处理程序:

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);
    }
}};

为滚动元素添加数据绑定(bind):

  select data-bind="scrollDown: scrollDown ...

添加到主模型:

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

示例:http://jsbin.com/exuwis/14/edit

关于javascript - 如何让我的选择列表滚动到底部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13153906/

相关文章:

javascript - onClick() 未触发 + 意外数字?

javascript - Accordion 呈现但没有响应

javascript - Bootstrap 导航丸 - 'active' 类在打开的模式中不起作用

javascript - 在运行时检测 javascript 文本或元素溢出

javascript - SlickGrid w/DataView 不能立即反射(reflect)基础数据的变化

javascript - knockout.js 3.3 - 在 foreach 绑定(bind)中重新呈现组件

javascript - 如何解决自动完成错误?

javascript - 如何使用 token 使 CodeMirror 中的某些行只读

javascript - 为什么 javascript 中的 try/catch 在 IE 中失败

javascript - knockout 选中/取消选中所有组合框