Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Select2 onChange事件取消Firefox中的我的scrollTop命令_Jquery_Scroll_Jquery Select2 - Fatal编程技术网

Jquery Select2 onChange事件取消Firefox中的我的scrollTop命令

Jquery Select2 onChange事件取消Firefox中的我的scrollTop命令,jquery,scroll,jquery-select2,Jquery,Scroll,Jquery Select2,我广泛使用Select2。我正在尝试运行Select2.on('change')事件中的$('html,body').scrollTop()函数,但它无法正常工作。我的代码: $('.category_select').on('change', function(e){ var scroll_pos = $('#category_'+$(this).select2('val')).offset().top; $('html,body').scrollTop(scroll_pos)

我广泛使用Select2。我正在尝试运行Select2
.on('change')
事件中的
$('html,body').scrollTop()函数,但它无法正常工作。我的代码:

$('.category_select').on('change', function(e){
    var scroll_pos = $('#category_'+$(this).select2('val')).offset().top;
    $('html,body').scrollTop(scroll_pos);
});
如果滚动位置大于select2元素的顶部偏移量,则select 2将重新定位滚动,以便select2元素保持可见。我怎么能绕过这个

更新:

我已经创造了小提琴,显示了这个问题。这个问题只存在于Firefox中。在Safari和Chrome中,它可以正常工作,但在Firefox中却无法正常工作。

你在Firefox中发现了一个不错的“bug”

如果您更改选项的时间足够长,您将看到滚动条向下移动到正确的选项,然后再次出现select2(这非常快,因此您需要查看滚动条才能看到它)

这让我想到滚动部分可以工作,但有东西迫使select2输入显示出来。所以,我赌的是
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);
})
.on("select2-close", function () {
    setTimeout(function() {
        $('.select2-container-active').removeClass('select2-container-active');
        $(':focus').blur();
    }, 1);
});
基本上,您需要使用事件
select2 close
从select2输入中删除焦点。否则,Firefox将显示具有焦点的元素


我用于
select2 close
的代码属于,您可以在没有调试噪音的情况下进行检查。

您可以提供一个JSFIDLE来演示您的问题吗?我将尝试设置它。嗯,我创建了一个FIDLE来演示问题,但它按预期工作:S。在我的应用程序中,它不会像fiddle中显示的那样工作,滚动总是在选择元素处停止。可能是selec2的版本,我需要做进一步的测试…@milz这个问题只存在于Firefox中。你可以查看上面的小提琴:非常感谢@milz。我怀疑select2中的某些东西正迫使scroll停止。非常感谢你的帮助。也许我应该把这个问题提交给Select2我很高兴我能帮助你。是的,你可以在GitHub上提交一个问题。现在确定他们是否可以做些什么,因为这个问题只发生在Firefox上。