gpt4 book ai didi

javascript - jQuery:在事件处理期间事件对象是否隐式传递?

转载 作者:行者123 更新时间:2023-12-03 11:32:51 24 4
gpt4 key购买 nike

我有以下函数,它将一系列事件处理程序绑定(bind)到 DOM:

  $( document ).on({
"mousewheel": scrollHandler,
"DOMMouseScroll": ("onmousewheel" in document) ? null : scrollHandler, // Firefox
"mousedown": function( e ) {
if( e.button === 1 ) {
e.preventDefault();
return false;
}
}
});

$( window ).on( "resize", function() { scrollToStep( step ); } ); // Re-centers the screen

每个事件处理程序都链接到scrollHandler,但没有一个事件处理程序将事件对象传递给scrollHandler。然而,在scrollHandler的函数定义中,该函数具有对事件对象的完全访问权限:

function scrollHandler( e ) {
var scrollDelta = e.originalEvent.wheelDelta || -e.originalEvent.detail,
dir = scrollDelta / ( Math.abs( scrollDelta ) );

e.preventDefault();
$( window ).scrollTop( 0 ).scrollLeft( 0 );
scrollSteps( -dir * STEP_SIZE );
}

这怎么可能? scrollHandler 中的参数 e 来自哪里?

最佳答案

你对这里发生的事情感到困惑。 "mousedown""mousewheel"实际上正在做同样的事情。 on 中未调用这些函数称呼。他们只是告诉 jQuery,“嘿,下次这个事件发生时调用这个函数并传递当前事件”。它是内联定义的(如 "mousedown" )还是在其他地方定义的(如 "mousewheel" )并不重要(只要它们在同一范围内)。

如果这仍然没有意义,您可能需要在 Google 上搜索有关“JavaScript 中的回调”的文章。

关于javascript - jQuery:在事件处理期间事件对象是否隐式传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26665815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com