2016-03-04 61 views
2

我有一个select2.js下拉,我想动画;我希望下拉滑动,而不是突然出现。Select2.js和jQuery的slideDown动画滞后/抖动

这就是我现在所做的:

var select = $("#select").select2({ 
    minimumResultsForSearch: -1 
}); 

$('#select').on('select2:open', function (e) { 
    $("#select option[value='0']").remove(); 
    $('.select2-results').hide().slideDown("slow", "easeInOutQuint"); 
}); 

的问题是,我第一次打开下拉,有轻微的延迟/抖动。这里是正在发生的更为精确的描述:

  • 选择容器被点击
  • 选择下拉开始往下滑。
  • 动画下降20%,它滞后0.2秒(试图消除)
  • 向下滑动然后继续正常。

第一次后,slideDown是完美的。这只是第一次有抖动/滞后。

任何想法?

请注意,easeInOutQuint来自jQuery Mobile转换。

回答

1

你需要用下面的代码超时功能检查,并将其应用在.select2,下拉我是怎么做到这一点

jQuery('#select').on('select2:open', function (e) { 
    jQuery('.select2-dropdown').hide(); 
    setTimeout(function(){ jQuery('.select2-dropdown').slideDown("slow", "easeInOutQuint"); }, 200); 
});