mj之-DOM事件流的三个阶段

DOM事件流的三个阶段

事件发生时会在元素节点之间按照特定的顺序进行传播,这个传播过程就是DOM的事件流。W3C制定的事件模型中,一次事件的发生分为三阶段:
1.捕获阶段:当元素触发某个事件如onclick时,顶层对象document就会发出一个事件流,随着DOM树的节点向目标元素节点流去,直到目标元素,在这个过程中,事件相应的监听函数不会被触发。
2.目标阶段:当到达目标元素后,如果给目标元素绑定了监听函数那就执行,否则不执行。
3.冒泡阶段:从目标元素往顶层元素对象document传播,途中如果有节点绑定了相应的事件处理函数,这些函数会被一次性触发。即如果绑定一个事件,那么这个时间就会依次在它的父级元素中被触发。
注意:所有的事件类型都会经历事件捕获但是只有部分事件会经历事件冒泡,如submit

阻止事件传播:

阻止冒泡事件:
在W3C中,用e.stopPropagation()来阻止,在IE中使用e.cancelBubble=true。它们只阻止事件的冒泡,不会阻止事件的默认行为。

这里要注意一个事:
var e=event || window.event;//这句话是为了兼容。在ie下,事件对象是全局的,作为window的一个属性,event在其他浏览器中作为方法的第一个参数传入。
包括这代码也是为了兼容:

//window.event?window.event.cancelBubble=true:e.stopPropagation();
function stopb(e){
	if(e&&e.stopPropagation){
	//非IE浏览器
		e.stopPropagation();
	}else{
		//IE浏览器
		window.envet.cancelBubble=true;
	}
}

阻止默认事件:
在W3C中,用e.preventDefault()来阻止,在IE中使用e.returnValue=false。

a.onclick=function(e){
//同样是兼容性
	if(e&&e.preventDefault){
		e.preventDefault();
	}
	else{
		window.event.returnValue=false;//event代表事件的状态,如触发其对象元素,鼠标键盘位置、状态等。它只有在事件发生过程中才有效。
	}
}

return false在js中只阻止默认行为,在jquery里既阻止默认行为又阻止冒泡。
IE浏览器和opeta中全局变量是window.event,firefox中是event,事件对象在ie中是window.event.srcElement,firefox中是event.target。opeta两者皆可。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue-mj-daterangepicker 是一个基于 Vue.js 的日期范围选择器组件。它是根据 mj-daterangepicker 组件进行封装,并提供了一些额外的功能配置选项。您可以使用该组件快速实现日期范围的选择功能,并且可以自定义样式和行为。 该组件支持以下主要功能: - 可以选择单个日期或日期范围。 - 可以通过输入框或弹出框的形式进行日期选择。 - 可以自定义日期格式。 - 支持禁用指定日期范围。 - 提供了多种事件回调,方便处理日期选择的逻辑。 要使用 Vue-mj-daterangepicker 组件,您需要先安装它并导入到您的 Vue.js 项目中。然后,在需要使用日期范围选择器的地方,将该组件作为子组件引入,并根据需要进行配置。您可以通过组件的 props 来控制组件的行为和外观。 以下是一个简单的示例代码,展示了如何在 Vue.js 中使用 Vue-mj-daterangepicker 组件: ```vue <template> <div> <vue-mj-daterangepicker v-model="selectedRange" :format="dateformat" @change="handleRangeChange" :disabled-dates="disabledDates"></vue-mj-daterangepicker> </div> </template> <script> import 'vue-mj-daterangepicker/dist/vue-mj-daterangepicker.css'; import VueMjDaterangepicker from 'vue-mj-daterangepicker'; export default { components: { VueMjDaterangepicker }, data() { return { selectedRange: null, dateformat: 'YYYY-MM-DD', disabledDates: { from: '2022-01-01', to: '2022-01-10' } }; }, methods: { handleRangeChange(range) { console.log('Selected range:', range); } } }; </script> ``` 这只是一个简单的示例,您可以根据您的具体需求来自定义配置和处理逻辑。更多详细的使用方法和配置选项,请参考 Vue-mj-daterangepicker 的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值