Jquery Scrolltop函数运行两次

Jquery Scrolltop函数运行两次,jquery,wordpress,jquery-animate,Jquery,Wordpress,Jquery Animate,我在select元素上有一个on change函数,用于触发ajax请求和响应。在最近的某个时候,它开始运行两次,但并没有触发更改本身。就是change函数中的所有内容。重复:更改函数只触发一次,但函数内容运行两次。两周前(上次我检查时)没有发生这种情况,从那以后我也没有更改任何相关代码。刚升级到WordPress 4.5。以下是代码(注释中包含控制台日志信息): 到底是什么?javascript文件只加载一次。没有其他javascript文件在任何地方引用此select元素。如控制台日志所示,

我在select元素上有一个on change函数,用于触发ajax请求和响应。在最近的某个时候,它开始运行两次,但并没有触发更改本身。就是change函数中的所有内容。重复:更改函数只触发一次,但函数内容运行两次。两周前(上次我检查时)没有发生这种情况,从那以后我也没有更改任何相关代码。刚升级到WordPress 4.5。以下是代码(注释中包含控制台日志信息):

到底是什么?javascript文件只加载一次。没有其他javascript文件在任何地方引用此select元素。如控制台日志所示,更改功能只触发一次。但是由于某些原因,动画功能运行了两次

编辑
我突然想到,它可能运行了两次,因为动画函数的选择器是
html,body
,但jQuery以前从来没有这样过,如果jQuery现在就是这样做的,那么我有数千个javascript文件要修改

哇,谢谢jQuery。使用html,body作为scrollTop函数的选择器已经是我们很多人长期以来的标准做法,现在它的行为不同了,我们都有很多工作要做。甚至WORDPRESS核心文件也在动画功能中使用
html、body

简而言之:选择器html,body现在将导致在jQueryV1.12.3中运行两次动画函数,而在以前的版本中,情况并非如此

编辑感谢Developer107下面的第一条评论

由于Firefox需要
html
和Chrome等,因此需要
body
,解决这一问题的方法是使用去盎司功能

我使用这个小插件:

然后像这样调用我的函数:

$('html,body').animate({scrollTop:0}, 250, $.debounce(0, true, function()
{
    // do stuff
}));

请参阅我的编辑。jQuery在使用html、body-on-animate函数之前从来没有这样做过。新jQuery新规则。如果你想让它在firefox中正常运行,你可能还需要
html
。请参考此链接-如本文中的一条评论所述,您可以在回调函数中
debounce
$('html,body').animate({scrollTop:0}, 250, $.debounce(0, true, function()
{
    // do stuff
}));