在Javascript中填充大型select下拉列表的最有效时间是什么时候?
我已经为此挣扎了一段时间。我使用主干渲染模型,并为下拉列表选择插件 当新集合出现时,jQuery slideDown效果用于渲染每个模型。每个模型都有一个选择下拉列表,需要填充600多个选项 我遇到的问题是,如果我先填充下拉列表,那么slideDown动画会很不稳定,实际上通常会被忽略(突然我的模型出现,没有动画) 我尝试过的另一个选项是首先渲染模型,只为特定下拉列表添加模型的值,然后设置它的选定值。然后,调用setTimeout并填充其余选项(在幕后)。然而,在这种情况下,结果是一个明显的,恼人的延迟。如果我没有设置超时,那么它会尝试填充尚不存在的下拉列表 我是否在如何有效地做到这一点上遗漏了什么?我正在缓存选择下拉列表的选项列表。我尝试了将所有选项循环成字符串并替换下拉列表中的html,以及循环每个选项并一次追加一个选项在Javascript中填充大型select下拉列表的最有效时间是什么时候?,javascript,jquery,select,drop-down-menu,backbone.js,Javascript,Jquery,Select,Drop Down Menu,Backbone.js,我已经为此挣扎了一段时间。我使用主干渲染模型,并为下拉列表选择插件 当新集合出现时,jQuery slideDown效果用于渲染每个模型。每个模型都有一个选择下拉列表,需要填充600多个选项 我遇到的问题是,如果我先填充下拉列表,那么slideDown动画会很不稳定,实际上通常会被忽略(突然我的模型出现,没有动画) 我尝试过的另一个选项是首先渲染模型,只为特定下拉列表添加模型的值,然后设置它的选定值。然后,调用setTimeout并填充其余选项(在幕后)。然而,在这种情况下,结果是一个明显的,恼
我认为我的问题更多地与动画和600多个下拉选项的组合有关。理想情况下,在模型出现后,它会立即填充下拉列表,不会有任何延迟。您不一定需要超时。您可以在主干中创建自己的
initialize: function () {
// When our event is triggered, load the dropdowns.
this.on( 'doneWithThings', this.loadDropdowns );
},
// render the view
render: function () {
// Whatever it is that you do when rendering.
// When you're done rendering, trigger an event.
this.trigger( 'doneWithThings' );
},
loadDropdowns: function () {
// Load them!
}
其他我会尝试的事情
将选项保留在客户端(JS数组)中,但不要将它们绘制到屏幕上,除非用户已展开屏幕的向下滑动部分。再次,在发生下滑效果时引发事件
理想情况下,模型出现后,将立即填充
没有延迟的下拉列表
不知道BlackOne,但如果有一些动画,你可以看看
我会改为使用typeahead(参见我的意思)。下拉列表中的600个选项对用户不友好。选择600个选项从来都不是有效的。不幸的是,这不是我可以控制的。我需要使用选择下拉列表。
$(":animated").promise().done(function() {
//load data
});