jquery事件冒泡和事件对象的讲解及jquery实现图片跟着鼠标走

和js的相应函数一致,jquery中若响应函数若返回false,可以取消指定元素的默认行为,比如submit的提交,和a的超链接的跳转,一个方法中只要有ruturn方法就会结束,不在往下执行,return的目的是让submit等默认的行为失效,也就是说return true也会使方法停止方法不在往下执行,但默认行为不会失效,要想失效只能return false。

事件冒泡:事件会根据 dom的层次结构像水泡一样不断从下到顶端

解决方式:处理函数中返回false,会对事件停止冒泡,而且还停止了元素的默认行为

<body>

<div id="content">

<span>内层span</span>

</div>

</body>

$(function(){

$("body").click(function(){alert("bodyclick");})

})

$("#content").click(function(){alert("dicClick");})

})

$("span").click(function(){alert("span click");

})

如果我们点击body,会输出body click

如果点击div,会输出 body click div click

如果点击span,会输出body click div click span click

之所以出现这种原因就是因为span在div内,div在body内,所以点击span就相当于点击div,点击div就相当于点击body,所以点击span会出发三个事件机制,这既是事件冒泡,要想防止这种情况出现,需要在每个函数的最后添加return false就可以防止冒泡了

对然return false可以解决这个问题,但是兼容性不是很强,那么如何才能提高兼容性呢?

可以使用e。stopPrppagation(),e为事件对象

具体用法为:$(function(){

$("body").click(function(){alert("bodyclick");})

$("#content").click(function(e){alert("dicClick");e。stopPrppagation();})

$("span").click(function(e){alert("span click");e。stopPrppagation()})

})

e。stopPrppagation()为阻止事件冒泡,但是没有取消事件的默认行为,要想阻止事件的默认行为,还可以在调用事件对象的preventDefault()方法

事件对象

jquery中获取事件触发光标的x,y坐标是通过 事件对象.pageX, 事件对象.pageY的方式获取,这个和js中是有区别的,要注意,事件对象.target可以获得触发事件的元素最根级的触发元素,冒泡的起始),事件对象.target和this不是一个东西

jquery事件冒泡和事件对象的讲解及jquery实现图片跟着鼠标走

假如上面是页面结构,给tr,td还有p都添加了onclick事件,

点击tr target是p this是tr

点击td targer是p this是td

点击p target是p this是p

p就是最根级的元素,所以无论点击哪一个target都是p,而this就是点击哪一个就是哪一个,这要区分

当触发事件时,事件对象就会被创建,体现到程序中就是使用事件只需为函数添加一个参数,这参数就是对象

比如:获取事件的x,y

$(function(){

$("body").onmouseover(function(event){

alert(event.pageX+event.pageY);

}

)

})

这里就是通过在方法中写上一个参数event,而这个参数就是事件对象了

事件对象还有属性

which属性:如果是鼠标事件则获得按键(1左键,2中键,3右键)

altkey,shiftkey,ctrlkey属性获得alt,shift,ctrl是否按下为bool值

keyCode(键盘的,小键盘和主键盘的keycode不一样)

charcode(Asc码)

以前通过js的方式写过图片跟着鼠标走,下面写一个jquery的方式实现,图片跟着鼠标走

jquery事件冒泡和事件对象的讲解及jquery实现图片跟着鼠标走

每天分享,欢迎关注

相关推荐