冒泡事件(Bubbling Event)是指在DOM树中从子元素向父元素逐级触发的一种事件传递方式。大多数情况下,冒泡事件具有很好的灵活性和可扩展性,但是也存在一些特殊情况,这些情况下事件不支持冒泡。,一、哪些事件不支持冒泡?
虽然大部分的事件都支持冒泡,但存在一些事件是不支持冒泡的。以下是一些常见的不支持冒泡的事件:,二、事件示例
为了更好地理解冒泡事件的局限性,下面针对每个不支持冒泡的事件给出具体的代码示例,以便更好地理解:,HTML代码:,JavaScript代码:,结果:
当文本框获得焦点时,只会在控制台输出”Input获得焦点”,而不会输出”Div获得焦点”。因为focus事件没有冒泡到父元素div。,HTML代码:,JavaScript代码:,结果:
当图片加载完成时,只会在控制台输出”图片加载完成”,而不会输出”Div加载完成”。因为load事件没有冒泡到父元素div。,HTML代码:,JavaScript代码:,结果:
当输入框的值改变时,只会在控制台输出”输入框值改变”,而不会输出”表单值改变”。因为input事件没有冒泡到父元素form。,HTML代码:,JavaScript代码:,结果:
当点击提交按钮时,只会在控制台输出”表单已提交”,而不会输出”Div提交”。因为submit事件没有冒泡到父元素div。注意到例子中我们通过event.preventDefault()方法阻止了表单的默认提交行为。,HTML代码:,JavaScript代码:,结果:
当滚动div时,只会在控制台输出”滚动”,而不会冒泡到上层元素。,HTML代码:,JavaScript代码:,结果:
当鼠标进入div时,只会在控制台输出”鼠标进入div”,而不会输出”鼠标进入body”。,HTML代码:,JavaScript代码:,结果:
当右键点击div时,只会在控制台输出”右键点击”,而不会输出”右键点击body”。注意到例子中我们通过event.preventDefault()方法阻止了默认的上下文菜单显示。,三、总结
冒泡事件是DOM树中子元素向父元素逐级触发的一种事件传递方式,大部分的事件都支持冒泡,但也存在一些不支持冒泡的特殊事件。本文通过具体的代码示例分析了不支持冒泡的事件,希望能对读者理解冒泡事件的局限性有所帮助。,