在Javascript中填充大型select下拉列表的最有效时间是什么时候?

在Javascript中填充大型select下拉列表的最有效时间是什么时候?,javascript,jquery,select,drop-down-menu,backbone.js,Javascript,Jquery,Select,Drop Down Menu,Backbone.js,我已经为此挣扎了一段时间。我使用主干渲染模型,并为下拉列表选择插件 当新集合出现时,jQuery slideDown效果用于渲染每个模型。每个模型都有一个选择下拉列表,需要填充600多个选项 我遇到的问题是,如果我先填充下拉列表,那么slideDown动画会很不稳定,实际上通常会被忽略(突然我的模型出现,没有动画) 我尝试过的另一个选项是首先渲染模型,只为特定下拉列表添加模型的值,然后设置它的选定值。然后,调用setTimeout并填充其余选项(在幕后)。然而,在这种情况下,结果是一个明显的,恼

我已经为此挣扎了一段时间。我使用主干渲染模型,并为下拉列表选择插件

当新集合出现时,jQuery slideDown效果用于渲染每个模型。每个模型都有一个选择下拉列表,需要填充600多个选项

我遇到的问题是,如果我先填充下拉列表,那么slideDown动画会很不稳定,实际上通常会被忽略(突然我的模型出现,没有动画)

我尝试过的另一个选项是首先渲染模型,只为特定下拉列表添加模型的值,然后设置它的选定值。然后,调用setTimeout并填充其余选项(在幕后)。然而,在这种情况下,结果是一个明显的,恼人的延迟。如果我没有设置超时,那么它会尝试填充尚不存在的下拉列表

我是否在如何有效地做到这一点上遗漏了什么?我正在缓存选择下拉列表的选项列表。我尝试了将所有选项循环成字符串并替换下拉列表中的html,以及循环每个选项并一次追加一个选项


我认为我的问题更多地与动画和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
  });​