我正在广泛地使用Select2。我试图在Select2 .on('change') 事件中运行Select2函数,但它不能正常工作。我的代码:
.on('change')
$('.category_select').on('change', function(e){ var scroll_pos = $('#category_'+$(this).select2('val')).offset().top; $('html,body').scrollTop(scroll_pos); });
如果滚动位置更大,那么select2元素的顶部偏移量,然后选择2将重新定位滚动,使select2元素保持可见。我怎么才能绕开这条路?
更新:
我创造了小提琴,显示了这个问题, http://jsfiddle.net/83acq8hp/2/ 。这个问题只存在于Firefox中。在Safari和Chrome中,它正常工作,但在Firefox中,就像小提琴显示的那样。
618夏日盛惠
2核2G云服务器首年95元,GPU云服务器低至9.93元/天,还有更多云产品低至0.1折…
你在Firefox中找到了一个很好的"bug“。
如果您更改这些选项足够长的时间,您将看到滚动条下降到正确的选项,然后再次显示到select2 (这非常快,因此您需要查看滚动条才能看到它)。
这让我认为滚动部分可以工作,但是有东西迫使select2输入显示出来。所以,我赌的是 focus 。
focus
这弹琴 演示了我的调试过程,您应该使用以下代码来解决这个问题:
$('#mySelect').select2(); $('#mySelect').on("change", function(e) { var element = '#test'+$(this).select2('val'); var scroll_pos = $(element).offset().top; $('html,body').scrollTop(scroll_pos);