Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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
事件处理命令 Javascript jQuery事件处理_Javascript_Jquery_Dom Events_Event Bubbling - Fatal编程技术网

事件处理命令 Javascript jQuery事件处理

事件处理命令 Javascript jQuery事件处理,javascript,jquery,dom-events,event-bubbling,Javascript,Jquery,Dom Events,Event Bubbling,如果on事件(例如“click”)绑定了父元素的一个函数和子DOM元素的另一个处理函数,则调用哪一个? 如果所有元素都将被调用,那么它们的调用顺序是什么?事件会在DOM树中“弹出”,因此,如果您有元素及其父元素的处理程序,则会首先调用子元素处理程序 如果为单个DOM元素上的事件注册了多个处理程序(例如,为单个按钮注册了多个“单击”处理程序),则将按照处理程序附加到元素的顺序调用这些处理程序 处理程序可以做一些事情来更改完成后发生的情况: 使用传入的事件参数,调用event.preventDef

如果on事件(例如“click”)绑定了父元素的一个函数和子DOM元素的另一个处理函数,则调用哪一个? 如果所有元素都将被调用,那么它们的调用顺序是什么?

事件会在DOM树中“弹出”,因此,如果您有元素及其父元素的处理程序,则会首先调用子元素处理程序

如果为单个DOM元素上的事件注册了多个处理程序(例如,为单个按钮注册了多个“单击”处理程序),则将按照处理程序附加到元素的顺序调用这些处理程序

处理程序可以做一些事情来更改完成后发生的情况:

  • 使用传入的事件参数,调用
    event.preventDefault()
    ,以防止任何“本机”操作发生
  • 调用
    event.stopPropagation()
    以防止事件在DOM树中冒泡
  • 从处理程序返回false,以停止传播和阻止默认值

注意,对于某些输入元素(复选框、单选按钮),处理有点奇怪。调用处理程序时,浏览器将已将复选框“checked”值设置为其先前值的相反值。也就是说,如果您有一个未选中的复选框,那么“click”处理程序将注意到在调用“checked”属性时(在用户单击之后),该属性将被设置为“true”。但是,如果处理程序返回false,则单击实际上不会更改复选框值,并且它将保持未选中状态。因此,这就像浏览器在调用处理程序之前执行了一半的“本机”操作(切换元素的“checked”属性),但只有在处理程序未返回false(或在事件对象上调用“preventDefault()”)时才真正更新元素。

首先调用子元素,然后调用父元素


当事件冒泡时,事件从子事件转到父事件。在同一元素上,处理程序将按其绑定的顺序执行。

将被称为父处理程序或否?除非子处理程序阻止这种情况发生,否则将调用父处理程序-请参阅我的(编辑的)回答谢谢!这对我很有帮助。