JS事件控制

说明:我习惯使用jQuery来辅助我完成不少事情。因此此篇文章针对个人解决方案均采用jQuery。 浏览器

示例1、事件冒泡(对于父亲元素和子元素均设置的事件) ide

描述:在一个对象上触发某类事件(好比单击onclick事件),若是此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,若是没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象全部同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。
spa

解决办法: code

$('#targe').click(function(e){
    // do something
    e.stopPropagation(); // 阻止事件冒泡
})



示例2、点击其余区域,处理目标对象的效果 对象

描述:当设置了一个元素,好比autocomplete,在文本输入的时候,出现提示信息。原本能够经过离开焦点的时候,来关闭提示信息。可是对于提示的信息,我须要选择,选择的时候,无形中将离开元素焦点。
因为事件的相互影响,没法正确的处理此效果。 事件

解决办法:经过给document添加单击事件,当点击页面区域,则处理当前元素是否在我须要操做的区域内,不在,则中止个人操做。代码以下: ci

$(document).mousedown(function(e) {
	var target = e.target || e.srcElement;
	var rp = $(target).parents('.ci_autocomplete_box'); // 判断当前鼠标点击的元素是否在容器
        // 不在指望的容器内,则进行效果关闭操做 
	if (rp.length == 0) {
		$('.ci_autocomplete').hide();
	}
	e.stopPropagation();
});


以上,是最近在处理事件的时候,但愿相互交流。 get

相关文章
相关标签/搜索